lock锁,synchronize锁,区别,锁的详解(生产者,消费者)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 传统方式:synchronize,锁class,锁对象

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 根本就是因为if只判断了一次,就等待了,不会继续等待,而while就继续判断,不会同时唤醒的,而导致其中一个正常,另一个继续也执行,导致虚假唤醒

 就是用if判断的话,唤醒后线程会从wait之后的代码开始运行,但是不会重新判断if条件,直接继续运行if代码块之后的代码,而如果使用while的话,也会从wait之后的代码运行,但是唤醒后会重新判断循环条件,如果不成立再执行while代码块之后的代码块,成立的话继续wait。

posted @ 2022-03-30 09:04  飞翔的小鸟er  阅读(229)  评论(0)    收藏  举报