一、ReentrantLock与synchronized对比
1.一个表现为API层面的互斥锁,另一个表现为原生语法层面的互斥锁
2.ReentrantLock增加了一些高级功能,如:等待可中断,实现公平锁, 锁可以绑定多个条件。
3.jdk1.5中synchronized在多线程环境下效率不如ReentrantLock,但是1.5以上相差无几.
4.他们都属于互斥同步(或者阻塞同步)类型的一种实现方式
5.结论:如果是1.6及以上的jdk环境且用不上ReentrantLock的高级功能前提下,因为大家更熟悉synchronized,且它也在不断完善中,所以建议使用synchronized。
二、线程安全的实现方法
阻塞同步,非阻塞同步,无同步阻塞(包括可重入代码,线程本地存储)
下图是《深入理解java虚拟机》一书中在jdk1.5环境下测试的性能对比图