在学习线程协作时,大家都会用到notify()或者notifyAll()方法,最初我对于wait()和notifyAll()方法的印象仅仅是对象锁调用wait方法,使线程进入阻塞状态,等待对象锁执行notify方法将其唤醒。继续执行
但最近学习一位大牛的视频,无意间发现一个线程执行的顺序好像跟我想象的不太一样。
代码如下:
1、计数器线程类:
2、唤醒线程
3、测试类
4、控制台输出:
分析:如果只是没有唤醒线程,则两个线程只会打印上边两行代码,并且都会进入阻塞状态
执行了notifyAll方法以后,输出了i的值为2;
让我产生了一些疑问,i明明是一个局部变量,作用域只是到方法结束为止,
所以,我判断,在计数器线程被唤醒之后,是继续执行run()方法,而不是再次重新进入run方法执行。
欢迎各位大牛路过指点 ——一个小白的努力奋斗