两个线程使用相同的变量

时间:2013-12-08 14:23:02

标签: java multithreading synchronization

private void stopThread() {
    thread1.canRun(false);
}

private void createThread() {
    thread1.stopThread();
    thread1.canRun(true);
    thread1 = new Thread(thread1);
    t.start();

}

我只有一个按钮。 当我点击按钮时,我执行计数为n数的线程 当我再次单击该按钮时,最后一个线程应该停止并创建一个新线程。

问题是当我创建第二个线程时,似乎最后一个线程没有停止并且都继续运行

  @Override
    public void run() {
    try {
        for (int i = 0; i <= TimeOut && canRun; i++) {
             System.out.println(i);
            Thread.sleep(1000);

            }

        }

    private volatile boolean canRun;

1 个答案:

答案 0 :(得分:0)

问题可能出在以下几行:

thread1.stopThread();    // <-- sets canRun to false
thread1.canRun(true);    // <-- sets canRun to back to true

您还可以使用true初始化canRun,这意味着该线程可以在其初始状态中运行:

 private volatile boolean canRun = true;