Sharing a variable between multiple different threads(在多个不同线程之间共享一个变量)
问题描述
我想像这样在多个线程之间共享一个变量:
I want to share a variable between multiple threads like this:
boolean flag = true;
T1 main = new T1();
T2 help = new T2();
main.start();
help.start();
我想在主线程和帮助线程之间共享 flag,这是我创建的两个不同的 Java 类.有什么办法吗?谢谢!
I'd like to share flag between main and help thread where these are two different Java classes I've created. Is any way to do this? Thanks!
推荐答案
T1 和 T2 都可以引用包含该变量的类.
然后,您可以使这个变量 volatile,这意味着
对该变量的更改在两个线程中立即可见.
Both T1 and T2 can refer to a class containing this variable.
You can then make this variable volatile, and this means that
Changes to that variable are immediately visible in both threads.
有关详细信息,请参阅这篇文章.
See this article for more info.
易失性变量共享同步但没有原子性特征.这意味着线程将自动查看 volatile 变量的最新值.它们可以用来提供线程安全,但只能在非常受限的案例集:那些不施加约束的案例多个变量或变量的当前值与其未来的价值.
Volatile variables share the visibility features of synchronized but none of the atomicity features. This means that threads will automatically see the most up-to-date value for volatile variables. They can be used to provide thread safety, but only in a very restricted set of cases: those that do not impose constraints between multiple variables or between a variable's current value and its future values.
并注意使用 volatile 与更复杂的共享状态方式的优缺点.
And note the pros/cons of using volatile vs more complex means of sharing state.
这篇关于在多个不同线程之间共享一个变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在多个不同线程之间共享一个变量
基础教程推荐
- 无法复制:“比较方法违反了它的一般约定!" 2022-01-01
- 存储 20 位数字的数据类型 2022-01-01
- Struts2 URL 无法访问 2022-01-01
- REST Web 服务返回 415 - 不支持的媒体类型 2022-01-01
- Spring AOP错误无法懒惰地为此建议构建thisJoinPoin 2022-09-13
- 如何对 Java Hashmap 中的值求和 2022-01-01
- RabbitMQ:消息保持“未确认"; 2022-01-01
- 问题http://apache.org/xml/features/xinclude测试日志4j 2 2022-01-01
- 使用堆栈算法进行括号/括号匹配 2022-01-01
- 修改 void 函数的输入参数,然后读取 2022-01-01
