面试官:说说synchronized和Lock(或ReentrantLock)的区别
Java 1.5之后,对共享变量访问的协调机制除了之前的synchronized和volatile又多了一个Lock,深刻理解synchronized与Lock,并熟悉两者的应用场景对编写并发程序有着非常重要的作用
部落新添大将
话说JDK1.5之前,并发部落 synchronized 和 volatile 可谓红人,无人不知,无人不晓
当多个线程访问同一共享变量的时候,只需在操作该共享变量的方法上加一个synchronized,就可以保证同一时刻只有一个线程操作该共享变量(还有其他用法)
这使得多个线程按照要求合理的占用和释放资源,所以并发部落如此昌盛,synchronized 功不可没
JDK1.5的到来,打破了这种局面,一个名为Lock的接口出世,听说这个Lock刚出世就神通广大,不仅有着和synchronized一样的功能,在锁的获取上还可以定时获取,轮询获取和可中断获取等等一系列高级的技能
这消息传到了synchronized的耳中,心中很是不甘,决定找个擂台与Lock一决胜负,可是想到Lock有那么多的优势,自己心中顿时没了底气,所以他决定对自己升级一下再去PK
synchronized找到了JDK老大诉苦,说要改造改造自己,JDK老大说道:“之前一直有人抱怨你慢,因为线程要获得锁和释放锁都要进行一次重量级的系统调用,我也想着给你优化优化”
“好啊好啊,s