据我所知,默认情况下,控制器为单例作用域。如果控制器中有一个静态变量,如何使它成为线程安全的?
除了使用同步方式来处理它之外,还有其他方法吗?
答案 0 :(得分:-1)
您可以使用ReadWriteLock
对某些共享库执行线程安全的读/写操作:
import java.util.concurrent.locks.*;
public class Something {
private static SomeObject object = new SomeObject();
private static ReadWriteLock objectLock = new ReentrantReadWriteLock();
public void doSomething() {
objectLock.readLock().lock();
try {
//reading something from object
} finally {
objectLock.readLock().unlock();
}
objectLock.writeLock().lock();
try {
//writing something in object
} finally {
objectLock.writeLock().unlock();
}
}
}
请注意,在此示例中,如果object
变量的值发生变化(而不是对象本身),则应使用volatile
修饰符对其进行声明。