【Q】什么是线程安全?

当多个线程访问某个类时,这个类始终能表现出正确的行为,我们称这个类是线程安全的。

线程安全问题无非是资源竞争导致的。

【Q】如何做到线程安全?

  • 阻塞同步:使用锁。
  • 非阻塞同步:是一种乐观策略,先进行操作,如果没有其他线程争用共享数据,那操作就成功了,如果有争用,就采取补救措施(最常见的是不断重试,直到成功为止),这种策略无需上下文切换,且整个过程具备原子性,典型的就是《CAS
  • 栈封闭:即不使用共享变量,改为使用局部变量。
  • 使用 《ThreadLocal》:为每个线程都创建一个独立变量,做到了线程隔离。

同步是时间换空间,使用局部变量以及 ThreadLocal 线程隔离是空间换时间。

版权声明:本文为xmsx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xmsx/p/9769556.html