停止特定的java线程

mik*_*eyP 4 java multithreading

我有一个按钮"addCashier",它正在创建一个名为"Cashier"的线程,现在这个线程只是每4秒生成一次订单,在线程的run()方法中有一个while(true)循环.一切都很好,但现在我想添加一个按钮来模拟收银员注销.我在我的while循环onDuty和一个公共函数logOff()中添加了一个布尔变量,它将onTuty bool设置为false以使我退出运行的while循环.我现在的问题是来自我的gui类如何在特定线程上调用函数?每个收银员线程都是在运行时生成的,所以我不知道他们的名字.

我希望我有道理.提前致谢.

Tom*_*icz 8

Thread t = CashierThread();  //keep the reference to thread somewhere...
Run Code Online (Sandbox Code Playgroud)

现在使用内置中断标志而不是布尔属性:

public void run() {
  while(!Thread.currentThread().isInterrupted()) {
    //...
  }
}
Run Code Online (Sandbox Code Playgroud)

当您想通过单击按钮来转动线程时,只需调用:

t.interrupt();
Run Code Online (Sandbox Code Playgroud)

当然,您需要t从客户端代码访问变量.