Java线程安全的处理方法

Java线程安全的处理方法

不可变是线程安全的

互斥同步(阻塞同步):synchronized、java.util.concurrent.ReentrantLock.

目前这两个方法的性能已经差不多了,建议优先选用synchronized。

ReentrantLock增加了如下特性:

等待可中断:当持有锁的线程长时间不释放锁,正在等待的线程可以选择放弃等待

公平锁:多个线程等待同一个锁时,须严格按照申请锁的时间顺序来获得锁

锁绑定多个条件:一个ReentrantLock对象可以绑定多个condition对象,而synchronized是针对一个条件的,如果要多个,就得有多个锁

非阻塞同步:是一种基于冲突检查的乐观锁定策略,通常是先操作,如果没有冲突,操作就成功了,有冲突再采取其他方式进行补偿处理。

无同步方案:其实就是在多线程中,方法并不涉及共享数据,自然也就无需同步了

---- The end of this article ----