【发布时间】:2016-06-28 20:29:17
【问题描述】:
我有一个静态方法,如果另一个线程调用了它,我有兴趣立即返回它。
例如。
public static void parseNetworkData() {
if(isRunning) {
return;
}
// get and cache network data
// for use
}
我真的不想同步该方法,因为如果网络调用已经完成,我不希望其他线程也这样做。
现在我不确定以下内容:
考虑到这是一个静态方法,定义/处理 isRunning 的最佳方法是什么?
我应该将其转换为实例方法吗?
【问题讨论】:
-
如果方法被一个线程调用,而另一个线程正在其中运行,它预期返回什么?
-
@JohnBollinger:你是对的。这令人困惑。这个想法是代码应该更新一些东西,并且在所有情况下都不需要返回值。我会更新OP
-
您可以同步方法并创建一个静态实例变量来跟踪 parseNetworkData() 是否运行(布尔值)。并在需要再次运行时再次将布尔值设置为 false
-
使标志可变和静态
-
@CSK:但是另一个线程不需要阻塞其他线程完成
标签: java multithreading oop concurrency