你可以打电话interrupt()给线程.但是,这不会阻止线程,除非你在线程循环中对它做了一些事情.
Thread t = new Thread() {
@Override
public void run() {
while (shouldLoop() && !isInterrupted()) {
. . .
}
}
}();
// somewhere else:
t.interrupt(); // will exit thread on next loop iteration
Run Code Online (Sandbox Code Playgroud)
如果您不想使用interrupt()(例如,您没有对该线程的引用),则可以在线程代码可访问的某处设置一个标志.您仍然需要在线程循环中检查它并退出循环(和run()方法)以退出线程.