当前位置: 代码迷 >> J2SE >> 一个关于线程的基础有关问题
  详细解决方案

一个关于线程的基础有关问题

热度:203   发布时间:2016-04-24 02:27:55.0
一个关于线程的基础问题
遇到一个问题
2个class
ThreadA会打印出6行:每行间隔100ms
1,Thread A
2,Thread A
3,Thread A
4,Thread A
5,Thread A
6,Thread A
ThreadB也会打印出六行:每行间隔100ms
1,Thread B
2,Thread B
3,Thread B
4,Thread B
5,Thread B
6,Thread B

如何使得两个线程有序的打印出来? 先打印完A 在打印B
我想用到synchronised Syste。out 但是具体怎么使用不知道 求解。

------解决方案--------------------
使用wait notify方法 

------解决方案--------------------
wait notify为最佳实现,如果jdk1.5 你可以用 信号量

Java code
package com.ssj.test;public class NotifySynch {    private Object lock = new Object();    class ThreadA extends Thread{        @Override        public void run() {            for(int i = 0 ; i < 6 ; i++){                System.out.println("ThreadA");            }            synchronized(lock){                    lock.notifyAll();            }        }    }        class ThreadB extends Thread{        @Override        public void run() {            synchronized(lock){                try {                    lock.wait();                } catch (InterruptedException e) {                                    }            }            for(int i = 0 ; i < 6 ; i++){                System.out.println("ThreadB");            }        }    }        public void testRun(){        new ThreadB().start();        new ThreadA().start();    }    public static void main(String[] args) {        new NotifySynch().testRun();    }}
  相关解决方案