什么是线程安全性
当多个线程访问某个类时,这个类始终都能表现出正确的行为,那么就称这个类是线程安全的。
如何实现线程安全
-
无状态对象
即对象既不包含任何域,也不包含任何对其他类中域的引用。计算过程中的临时状态仅存在于线程栈上的局部变量中,并且只能由正在执行的线程访问。由于线程之间并没有共享状态,就好像都在访问不同的实例。由于线程访问无状态对象的行为并不会影响其他线程中的正确性,故而无状态对象是线程安全的。 -
原子操作
所谓原子操作是指不会被线程调度机制打断,一旦开始就不会结束,中间不会有任何操作,也不会进行线程的切换。原子操作可以是一个步骤,也可以是多个操作步骤,但是其顺序不可以被打乱,也不可以被切割而只执行其中的一部分,将整个操作视作一个整体是原子性的核心特征。
如何实现原子操作
- 加锁机制
锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。关于锁的跟多知识请看:Java锁的种类
原文地址 https://blog.csdn.net/u013560890/article/details/89316487