奇怪的事情。如果条件desiredHealth < p.getFakeHealth()
,下面的代码有效是真的,它确实有作用。
@Override
public void run(){
while(game_running){
System.out.println("asd");
if(desiredHealth < player.getFakeHealth()){
DOES SOMETHING
}
}
但是...如果没有“System.out”,它就无法工作。它不检查条件。 它在某种程度上处于较低的优先级,或者其他什么。
@Override
public void run(){
while(game_running){
if(desiredHealth < player.getFakeHealth())
DOES SOMETHING
}
}
我是线程新手,所以请不要对我大喊大叫:)
仅供引用,该线程是一个“扩展线程”的普通类,是的 - 它正在运行。而且“game_running”始终为真。
最佳答案
变量必须是 volatile 的,因为 volatile 关键字表明值可能会在不同的访问之间发生变化,即使它看起来没有被修改。
因此,请确保将 game_running
声明为 volatile
。
关于java - 后台线程不起作用,但使用简单的 'System.out' 就可以了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34221883/