gpt4 book ai didi

java - Java线程共享静态变量

转载 作者:行者123 更新时间:2023-12-03 13:14:16 27 4
gpt4 key购买 nike

当静态变量tracking为true时,有一个线程可以跟踪新电子邮件。看起来像这样:

Thread thread = new Thread(new Runnable() {

@Override
public void run() {
try {
tracking = true;
while(tracking){
//check emails
}
} catch (Exception e) {
e.printStackTrace();
}
}
});

我实现了一个停止跟踪电子邮件的功能,该功能基本上将 tracking设置为false。

跟踪只是一个 private static boolean,我仅在执行这些任务的类内部使用。

这种方法会导致我遇到任何问题吗?

最佳答案

如果有多个线程读写同一变量,则需要使用同步(例如AtomicBoolean)。在这种特殊情况下,将tracking声明为 volatile 就足够了,这样一个线程中设置为该变量的新值将在另一个线程中正确可见:

private static volatile boolean tracking;

关于java - Java线程共享静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53047441/

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