跨所有线程更新线程

时间:2014-03-31 05:34:40

标签: java multithreading variables volatile

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

public volatile String userInput = null;

该变量用作:

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

等到变量有值,然后在当前类中为其赋值。该变量在Server类中设置。

是否需要别的东西?或者是不稳定的错误?非常感谢,谢谢。)

1 个答案:

答案 0 :(得分:0)

@pokeairguy welcome :) ..

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

并且您的代码为每个对象制作了不同的易失性成员,即每个对象的不同,因此不能共享..

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