***仅为自己学习笔记
sysnchronized(包括块和方法)
sysnchronied适合较少的任务,lock适合较大的并发量
sysnchronied执行线程时,其他线程只能在线程池中等待,等释放锁时,线程池中的线程抢锁。
wait()释放锁,释放CPU;notify(),notifyAll()唤醒
sleep()释放CPU,不释放锁。时间到后,最懂唤醒。
同步代码块中条件,即锁是唯一的,只有锁相同,才可以同步
lock即对每一个锁加上一个监听器,直接对监听器操作。需要在最后时释放锁
Lock lock = new ReentrantLock(); 创建锁
Condition con1 = lock.newCondition(); 获取锁上的监听器;可以一个锁上加上多组监听器
Condition con1 = lock.newCondition();
lock.lock() 获取锁
lock.unlock() 释放锁
trylock()获取锁返回true
sysnchronied同步过程中,其他线程必须等待进行中的线程任务结束。
ReentrantLock则等待中的线程可被打断等待状态