不使用“已同步”关键字的线程安全代码?

2022-09-04 00:59:24

在不使用关键字的情况下,有哪些可能的方法可以使代码线程安全?synchronized


答案 1

实际上,有很多方法:

  1. 如果没有可变状态,则根本不需要同步。
  2. 如果可变状态仅限于单个线程,则无需同步。这可以通过使用局部变量或java.lang.ThreadLocal来完成。
  3. 您还可以使用内置同步器。java.util.concurrent.locks.ReentrantLock 具有与使用块和方法时访问的锁相同的功能,并且更加强大。synchronized

答案 2

只有方法的本地变量/引用。或者确保任何实例变量都是不可变的。