实现多线程依次交替执行,如两个线程交替输出100以内的整数:
线程1 : 1
线程2 : 2
线程1 : 3
线程2 : 4
线程1 : 5
线程2 : 6
……
class Number implements Runnable{
private int number = 1;
private Object obj = new Object();
@Override
public void run(){
while(true){
//以下出现一、二、三、四、五、六代表进行的顺序
synchronized(obj){
/*
一、
假设第一次进来的是线程1,拿到obj这个锁,线程第一次进来时,
没有需要唤醒的线程,所以notify不起作用;
三、此时线程2拿到obj这个锁进来了,发现线程1在等待,
所以读到notify这个代码时唤醒了线程1,
这时线程1和线程2继续向下运行;
五、线程1又得到obj这个锁进来了,并notify唤醒了线程2,
线程1和线程2继续向下运行……
*/
obj.notify();
if (number <= 100){
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().