我有多个线程和一个变量。我将此变量设置为一个字符串中的字符串值,然后在另一个线程中使用该最新变量。然而,它似乎并没有跨线程更新。我已将变量设置为
public volatile String userInput = null;
该变量用作:
Server s = new Server();
while (s.userInput==null)
{
}
System.out.println(s.userInput);
command = s.userInput;
等到变量有值,然后在当前类中为其赋值。该变量在Server类中设置。
是否需要别的东西?或者是不稳定的错误?非常感谢,谢谢。)
答案 0 :(得分:0)
@pokeairguy welcome :) ..
顺便说一下,volatile告诉JVM,不能缓存字段值。每当写入发生时,必须在任何引用的地方更新=因此 volatile
并且您的代码为每个对象制作了不同的易失性成员,即每个对象的不同,因此不能共享..
这就是为什么使用static是跨线程对象共享数据成员的方法