锁类型:
可重入锁:在执行对象中所有的同步方法时,不必再次去获取锁
可中断锁:在等待获取锁过程中可中断
读写锁:对线程的读写分为两个部分,读过程中多线程可一起访问readLock,写过程中必须同步一起读
公平锁:按照等待获取锁时间长的长短来获取锁,等待越长的具有优先获得锁的权利
Synchronized
存在层次上:java的关键字,在jvm层面
锁的释放:以获取锁的代码块执行完毕释放,若是异常,jvm则会让线程释放锁
锁的阻塞:若是A线程获得锁,则B等待;若是A出现阻塞,则B一直处于阻塞
锁状态:无法判断
锁类型:可重入、非公平、不可中断
性能:少量同步
Lock
存在层次上:java类
锁的释放:在finally中必须释放锁,lock.unlock,否则会造成死锁
锁的阻塞:分情况而定,线程可以尝试获得锁,线程可以不用一直等待,主要是参考Lock接口中的lockInterruptibly()方法
锁状态:可以判断,可以通过trylock()方法来得知当前线程是否获得锁
锁类型:可重入、公平(亦可非公平)、可中断;ReentrantLock中默认是非公平锁的,new NofairSync
性能:大量同步