当前位置: 首页 > 面试题库 >

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

秦天宇
2023-03-14
问题内容

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

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

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


问题答案:

二者T1T2可以参照包含该变量的类。
然后,可以使该变量为 volatile ,这意味着
对该变量的更改在两个线程中立即可见。

有关更多信息,请参见本文。

易变变量 共享已同步的可见性功能,但不共享原子性功能。这意味着线程将自动 查看volatile变量的最新值
。它们可用于提供线程安全性,但仅在非常有限的一组情况下:在多个变量之间或变量的当前值与其将来值之间不施加约束的情况。

并注意使用volatile共享状态与更复杂的共享状态方法的利弊。



 类似资料:
  • 背景:我正在并行运行自动化测试。使用pom.xml中的分叉,多个浏览器在相同数量的线程中启动,即1个浏览器是1个线程。 中的下面插件创建了与线程(fork)计数相等数量的。 所有这些类都同时并行执行。因此,似乎每当我创建或时,每个线程都会创建自己的这些,因此跨多个线程共享变量的概念是不起作用的。 我只想让一个线程访问“准备测试数据”函数,并将<code>标志 我正在按照教程https://www.

  • 问题内容: 我有两个线程。可以调用修改变量的类的update方法。另一个调用读取该变量的类的update方法。只有一个线程写入,一个(或多个)线程读取该变量。由于我是多线程技术的新手,我需要在并发方面做什么? 谢谢, 问题答案: 如果有且仅有一个写线程,你可以逃脱使得它。否则,请查看答案。 仅在只有一个写线程的情况下才起作用,因为只有一个写线程,因此它始终具有的正确值。

  • Python 3.1.2 我对多处理产生的两个线程之间的变量共享有问题。过程这是一个简单的bool变量,它应该决定线程是应该运行还是应该停止执行。下面是三种情况下显示的简化代码(但使用与我的原始代码相同的机制): 主要用于Thread加工。Thread类型和自紧度。正在运行布尔类型[工作正常] 我想了解的是为什么它是这样工作的,而不是另一种。(即,为什么第2点没有像我认为的那样起作用)。 测试是从

  • 问题内容: 我正在使用“线程”模块在Python中进行项目。 如何创建一个全局变量(在我的情况下,我需要为True或False),以便项目中的所有线程(大约4-6)都可以访问? 问题答案: 我们可以在线程类外部定义变量,并在类的方法内部全局声明它。 请参见下面的简单示例,它交替打印AB。两个变量和在两个线程和之间共享。打印,然后设置为30。打印,因为已在中进行了修改。然后设置为20,再次用于中。这

  • 我有大约60个套接字和20个线程,我想确保每个线程每次都在不同的套接字上工作,所以我根本不想在两个线程之间共享同一个套接字。 在我的类中,我有一个后台线程,它每60秒运行一次并调用方法。在方法中,我迭代我拥有的所有套接字,然后通过调用类的方法开始逐个ping它们,并根据响应将它们标记为活的或死的。在方法中,我总是需要迭代所有套接字并ping它们以检查它们是活的还是死的。 现在,所有读取器线程将并发

  • 问题内容: 我有一个下载器功能,可以并行下载多个文件。我使用以便下载同一文件的不同块。我想显示下载的状态栏。为此,我需要知道已经下载的总字节数()。 是否有一种方法可以设置将在所有这些进程和主进程之间共享的变量,以便每个进程都可以追加刚刚下载的字节数? 问题答案: 解决方案是利用新进程并传递共享的ctypes值: