多个线程获取x变量的值,但是一次只能有一个线程更改x变量的值

时间:2011-02-13 04:57:57

标签: java multithreading

在Java中,我有一个全局变量x,我应该使用什么来允许多个线程一次获取x的值,但是一次只有一个线程可以更改x变量的值?

任何一个例子? 感谢。

3 个答案:

答案 0 :(得分:1)

如果要允许多个并发读取,那么您将需要使用ReadWriteLockReentrantReadWriteLock类实现该特定接口)来保护访问。

答案 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等也应该能够解决用例。