gpt4 book ai didi

Java线程run()时调用其他方法{while(true){这里执行}}

转载 作者:行者123 更新时间:2023-12-01 07:34:42 24 4
gpt4 key购买 nike

我想知道 Java 中是否可以实现这样的事情。

class Running extends Thread {

private int value;

public void run() {
while (true) {
do stuff;
}
}

public int getValue() {
return value;
}
}

public static void main(String[] args){
Running runner = new Running();
runner.start();
int runnerValue = runner.getValue(); // Will I ever get the value?
}

[编辑]

我也想知道是否推荐这样做?

[编辑2]

我知道如果在 run() 方法中更改该值,则可能会搞砸。我更感兴趣的案例其实是

private final int VALUE = 100;

很抱歉含糊不清。

最佳答案

runner.start() 将在单独的线程中执行您的 run 方法,并立即继续下一行。然后,runnerValue 将被分配到类中的 value,该值为 0,除非:

  • 您的运行方法正在更改value的值
  • 并且它有时间来做这件事(这不太可能,因为启动线程可能需要太长时间才能允许这种情况发生)
  • AND你很幸运,可以从主线程看到这种变化 - 你没有使用任何形式的同步来读取主线程中的value,所以有不保证您能看到这样的变化。

关于Java线程run()时调用其他方法{while(true){这里执行}},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13644115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com