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

Thread safe calling a TimerTask from within another Thread

我有一个实现可运行的 class 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 说:

public class Timer extends Object

A facility for threads to schedule tasks for future execution in a background thread.

由于它在后台线程中运行,因此它不是线程安全的。

someFunc() 是否应该是一个 synchronized 函数取决于它的作用,使其成为 synchronized 并不能自动保证线程安全。