不使用`synchronized`关键字的线程安全代码?

chh*_*aya 13 java multithreading

在不使用synchronized关键字的情况下,使代码线程安全的可能方法是什么?

Mal*_*olm 10

实际上,有很多方法:

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


Nim*_*sky 5

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