Java随笔

发布时间 2023-03-29 14:20:23作者: Bepowerful

实现生产者消费者问题要使用while循环,不可以使用if否则会导虚假唤醒。

 

用synchronized实现生产者和消费者用的是wait和notify,用lock可以调用newCondition方法用的是await和signal而且可以让线程交叉执行

lock lock = new reantlock()

condition condition =lock.newCondition

condition.await()

condition.signal()

 

synchronized加在普通方法锁的是当前的对象,即方法的调用者,锁的执行顺序是先拿到锁先执行,如果新建两个对象调用锁的方法那么默认先按顺序 如果一个阻塞了则先执行另一个。

synchronized锁的是静态方法时锁的是class对象,一个类只能有一个class对象,如果说既调用了锁的静态方法又调用了普通锁方法,不管哪个在前哪个在后一定会先执行静态的那

个 ,如果一个锁的静态方法被两个对象调用了,那么默认先按顺序 如果一个阻塞了则先执行另一个。

synchronized方法体比较便捷,就是想锁普通就锁普通,相锁类就锁类