java 如何使用volatile boolean来检查线程是否应该运行?

aor9mmx1  于 2022-12-10  发布在  Java
关注(0)|答案(1)|浏览(119)

我有一个扩展线程的类,如下所示,我希望它有一个volatile布尔字段,它检查该字段以决定是否继续运行。shouldRun()方法从GUI的EDT调用。
我如何让这个线程检查布尔值,以了解它应该从我的GUI的事件调度器线程运行还是等待()?

public class RobotThread extends Thread{
    
    public volatile boolean run; 
    //if running == true, let thread run
    //if running == false, invoke wait() somehow;
    
    public RobotThread(AutoClicker autoClicker) {
        super(autoClicker);
        run = true;
    }
    
    public void setRun(boolean shouldRun) {
        this.run = shouldRun;
    }
    
    public boolean getRun() {
        return run;
    }
}

总的来说,我只是希望能够让这个线程wait(),并从我的GUI的Event Dispatcher线程重新启动。如果有更好的方法来做到这一点,我也会很高兴听到它。

wvt8vs2t

wvt8vs2t1#

对于等待和重新启动,我相信一个无限循环,waitnotify方法是你要寻找的。例如,看看this guide

相关问题