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

被折叠的 条评论
为什么被折叠?



