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

时间:2017-08-22 19:00:43

标签: java multithreading

我有一个扩展线程的类,如下所示,我希望它有一个volitile布尔字段,它检查以决定是否继续运行。从我的GUI的EDT调用shouldRun()方法。

我如何让这个线程检查布尔值以知道它应该运行还是从我的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;
    }
}

一般情况下,我只是希望能够让这个线程等待()并从我的GUI的事件调度程序线程中使用按钮重新启动。如果有更好的方法可以做到这一点,我也很乐意听到它。提前谢谢!

1 个答案:

答案 0 :(得分:1)

对于等待和重新启动,我相信无限循环,waitnotify方法是您正在寻找的。例如,请查看this guide