我有以下代码:
renderThread = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10000000; i++) {
System.out.println("Number: " + i);
}
}
});
renderThread.start();
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
ex.printStackTrace();
}
renderThread.interrupt(); //It should stop, but it does not stop.
renderThread.interrupt()
不会中断线程,它会继续运行。如果我更换renderThread.interrupt()
with .stop()
,然后线程停止。然而,.stop()
已弃用。
那么,停止线程的正确方法是什么,如果stop
已弃用并且interrupt
不起作用?
当您调用 Interrupt() 时,它会触发一个布尔标志,告诉 run 函数应该停止。这就是为什么我通常这样编写运行函数。
void run()
{
while(!Thread.interrupted())
{
//Do something
}
}
仅仅因为您调用中断并不意味着线程将立即停止或根本停止。这取决于 run 函数中的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)