java如何在线程之间共享变量

玛尔塔 G。

我想在线程之间共享变量,但它们给我带来了一些问题!我有一个整数,我希望主程序与它正在创建的线程共享并允许线程更改其值并被其他线程和主程序看到(我有两种不同类型的线程,我想创建每一种以上)。我已经考虑了临界区。这是我的程序的一部分:

public static void main(String[] args) throws InterruptedException{
    Integer  t = 0; //What do I change here?
    (new Te(t)).start();
    (new In(t)).start();     
}

我还没有编写我所有的程序,但在这种情况下,感兴趣的变量是 t,它将被 Threads 更改,并且主程序必须看到它的新值,以防它创建一个新线程,并且当它们创建新线程时由线程看到想读/写。

如果这些还不清楚,如果需要,我可以发布更多代码!

非常感谢您提前:)

戴维xxx

整数是不可变的。因此更改永远不会反映在您的线程之间。
作为替代方案,您可以将 包装Integer在共享对象中并提供线程安全方法来访问/更改包装的Integer值。

客户端可能看起来像:

public static void main(String[] args) throws InterruptedException{
    ThreadSafeInteger o = new ThreadSafeInteger();
    new Te(o).start();
    new In(o).start();     
}

或者更简单地使用AtomicInteger它来解决需求,因为它包装了一个int,此外它还确保了int值的原子更新

客户端可能看起来像:

public static void main(String[] args) throws InterruptedException{
    AtomicInteger o = new AtomicInteger();
    new Te(o).start();
    new In(o).start();     
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在线程之间发送变量/信息

来自分类Dev

在线程之间共享容器阵列

来自分类Dev

如何在两个线程之间实时更新共享的布尔变量?

来自分类Dev

为什么在线程之间共享静态变量会降低性能?

来自分类Dev

如何在python中的线程之间共享整数

来自分类Dev

在线程之间共享变量的方法

来自分类Dev

不确定如何在线程之间传递对象

来自分类Dev

在线程之间正确共享变量(.NET / VB.NET)

来自分类Dev

如何在线程之间共享非发送对象?

来自分类Dev

在线程之间共享mvar

来自分类Dev

如何在线程之间共享对AtomicBool的访问?

来自分类Dev

如何在php中的线程之间共享全局变量?

来自分类Dev

如何在线程之间共享巨大的进程

来自分类Dev

如何在线程之间传递数据?

来自分类Dev

如何在线程之间共享变量?

来自分类Dev

如何在线程之间传递IUIAutomationElement

来自分类Dev

pthreads在线程之间共享内存

来自分类Dev

Java Runnable多线程在线程之间共享中心对象

来自分类Dev

为什么在线程之间共享静态变量会降低性能?

来自分类Dev

如何在线程之间共享非发送对象?

来自分类Dev

如何在线程之间共享对象以证明它不是线程安全的?

来自分类Dev

Delphi XE8-在线程之间共享变量

来自分类Dev

Jmeter-如何在线程之间共享cookie?

来自分类Dev

如何在线程之间共享巨大的进程

来自分类Dev

如何在2个CLI线程之间共享变量(布尔)?

来自分类Dev

在JAVA中的线程之间共享变量

来自分类Dev

Java:在线程之间共享和调用变量

来自分类Dev

Ruby:如何在运行 object.method 的线程之间共享全局变量

来自分类Dev

如何在两个线程之间共享数据

Related 相关文章

热门标签

归档