繁体   English   中英

从另一个线程内调用 TimerTask 是线程安全的

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM