[英]Thread safe calling a TimerTask from within another Thread
我有一个实现可运行的 ABC 类。 ABC 有多个线程在运行。 在每个线程中,我想安排一个 TimerTask。 在此 TimerTask 块中调用的函数对于线程变量需要是线程安全的。
public class ABC implements Runnable {
private int abc = 0;
public void run() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
this.someFunc();
}
}, 1000, 1000);
while (true) {
abc = (abc + 1) % 20;
}
}
void someFunc() {
abc--;
}
}
这个线程安全还是我需要使 someFunc() 成为一个同步函数?
Javadoc说:
公共类定时器扩展对象
线程安排任务以便将来在后台线程中执行的工具。
由于它在后台线程中运行,因此它不是线程安全的。
someFunc()
是否应该是一个synchronized
函数取决于它在做什么,让它synchronized
并不能自动保证线程安全。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.