Synchronized和Lock的区别

锁类型:

可重入锁:在执行对象中全部的同步方法时,没必要再次去获取锁java

可中断锁:在等待获取锁过程当中可中断多线程

读写锁:对线程的读写分为两个部分,读过程当中多线程可一块儿访问readLock,写过程当中必须同步一块儿读jvm

公平锁:按照等待获取锁时间长的长短来获取锁,等待越长的具备优先得到锁的权利性能

 

Synchronized

存在层次上:java的关键字,在jvm层面spa

锁的释放:以获取锁的代码块执行完毕释放,如果异常,jvm则会让线程释放锁线程

锁的阻塞:如果A线程得到锁,则B等待;如果A出现阻塞,则B一直处于阻塞对象

锁状态:没法判断接口

锁类型:可重入、非公平、不可中断同步

性能:少许同步it

 

Lock

存在层次上:java

锁的释放:在finally中必须释放锁,lock.unlock,不然会形成死锁

锁的阻塞:分状况而定,线程能够尝试得到锁,线程能够不用一直等待,主要是参考Lock接口中的lockInterruptibly()方法

锁状态:能够判断,能够经过trylock()方法来得知当前线程是否得到锁

锁类型:可重入、公平(亦可非公平)、可中断;ReentrantLock中默认是非公平锁的,new NofairSync

性能:大量同步

相关文章
相关标签/搜索