在Java中,我有一个全局变量x,我应该使用什么来允许多个线程一次获取x的值,但是一次只有一个线程可以更改x变量的值?
任何一个例子? 感谢。
答案 0 :(得分:1)
如果要允许多个并发读取,那么您将需要使用ReadWriteLock(ReentrantReadWriteLock类实现该特定接口)来保护访问。
答案 1 :(得分:1)
在这种情况下,您应该能够使用java.util.concurrent.atomic
中的类。这些类是单个值的容器,允许无锁访问。如果您不需要比较和交换操作,只要您至少使用java 1.5,就可以使用volatile字段。
答案 2 :(得分:1)
您可以使用ReadWriteLock来实现此目的。 Java java.util.concurrent.locks包提供了不同类型的锁。您可以使用此程序包中的ReentrantReadWriteLock。代码示例可以在javadoc中找到。
如果全局变量是基本数据类型,java.util.concurrent.atomic包中的AtomicLong,AtomicInt等也应该能够解决用例。