关于多个线程同时调用shouldGo方法的问题

来源:8-7 notify和notifyall的区别

qq_慕粉1408169

2019-08-02

老师您好,三个传入waitTask的线程会同时调用synchronized方法shouldGo,但其实三个线程中都是同一个对象test在调用shouldGo,应该不能同时执行吧?为什么会同时执行呢

写回答

1回答

翔仔

2019-08-03

同学好,这三个线程是会并发执行,但是在执行shouldGo方法里会串行执行,只是由于go变量默认是false,因此都会依次调用wait方法挂起,直到调用go方法将go置为true,然后再唤醒其中一个或者所有线程重新执行,再由其中一个真正获得执行的线程重新执行并将go置为false

0
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程