java - 在多个不同线程之间共享一个变量

标签 java multithreading synchronization shared

我想像这样在多个线程之间共享一个变量:

boolean flag = true;
T1 main = new T1();
T2 help = new T2();
main.start();
help.start();

我想在主线程和帮助线程之间共享 flag,这是我创建的两个不同的 Java 类。有什么办法吗?谢谢!

最佳答案

T1T2 都可以引用包含该变量的类。
然后你可以让这个变量volatile,这意味着
对该变量的更改在两个线程中立即可见。

参见 this article了解更多信息。

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 与更复杂的共享状态方式的优缺点。

关于java - 在多个不同线程之间共享一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13582395/

相关文章:

java - 解码具有大文本元素的 xml 文件时出现 Axis2/JAX-WS 错误

java - 优化匹配2个巨大文本文件的java代码

java - Executorservice worker 没有在单独的线程中运行

java - 基于套接字的应用程序的非确定性行为

java无限等待问题?

java - 如何按字符串值(波斯字母)对 List<Object> 进行排序?

java - Java Interposer 中的堆栈粉碎

python - Python 3.7 和 3.8 之间 Python thread.join() 的差异

Python程序跨计算机操作netflix同时同步视频

android - 同步本地数据库(Sqlite)与服务器数据库android