多线程&并发篇---第四篇
系列文章目录
文章目录
- 系列文章目录
- 一、Java中synchronized 和 ReentrantLock 有什么不同?
- 二、有三个线程T1,T2,T3,如何保证顺序执行?
- 三、SynchronizedMap和ConcurrentHashMap有什么区别?
一、Java中synchronized 和 ReentrantLock 有什么不同?
相似点:
这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如
果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等
待,而进行线程阻塞和唤醒的代价是比较高的.
区别:
这两种方式最大区别就是对于Synchronized来说,它是java语言的关键字,是原生语法层面的互
斥,需要jvm实现。而ReentrantLock它是JDK 1.5之后提供的API层面的互斥锁,需要lock()和
unlock()方法配合try/finally语句块来完成。
Synchronized进过编译,会在同步块的前后分别形成monitorenter和monitorexit这个
还没有评论,来说两句吧...