【问题标题】:Update thread across all threads跨所有线程更新线程
【发布时间】:2014-03-31 05:34:40
【问题描述】:

我有多个线程和一个变量。我将此变量设置为一个字符串中的字符串值,然后在另一个线程中使用该最新变量。然而,它似乎并没有跨线程更新。我已将变量设置为

public volatile String userInput = null;

变量用作:

Server s = new Server();
while (s.userInput==null)
    {
    }
System.out.println(s.userInput);
command = s.userInput;

等到变量有值,然后将当前类中的变量分配给它。该变量在 Server 类中设置。

它还需要别的东西吗?还是 volatile 错了?谢谢,非常感谢:)

【问题讨论】:

  • 你应该告诉我们你在哪里使用这个字段。
  • 你甚至可以使用静态字段在线程对象之间共享数据成员
  • 寻找解决方案here
  • 似乎每个线程都有一个不同的实例。
  • @cooperHawk 让它成为静态已经奏效了,干杯

标签: java multithreading variables volatile


【解决方案1】:

@pokeairguy 欢迎 :) ..

顺便说一句,volatile 告诉 JVM,字段值不能被缓存.. 每当发生写入时,它必须在任何引用的地方更新=因此 volatile

并且您的代码为每个对象创建了不同的易失性成员,即每个对象的成员不同,因此没有共享..

这就是为什么使用静态是跨线程对象共享数据成员的方式

【讨论】:

    猜你喜欢
    • 2022-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    相关资源
    最近更新 更多