在执行Java计时器时防止竞争条件

时间:2017-10-08 13:26:54

标签: java multithreading timer race-condition critical-section

我有一个方法foo(),它通过多个线程多次调用。方法内部是关键部分。

private Object syncObject = new Object();
private Timer batchingTimer;
private TimerTask batchingAction;



public void foo() {
    synchronized(syncObject) {
        batchingTimer = new Timer();
        batchingAction = new TimerTask() {
            public void run() {
                b();
            }
        };
        batchingTimer.schedule(batchingAction, 1000);
        a();
        b();
    }
}

方法b()foo()方法内运行,也在计时器内运行。此方法有时会面临Race Condition(运行Action Method的Java Timer类创建一个新线程)。 在这种情况下如何防止种族条件?

0 个答案:

没有答案