Java Thread.stop() 与 Thread.interrupt()

2024-02-11

我有以下代码:

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(使用前将#替换为@)

Java Thread.stop() 与 Thread.interrupt() 的相关文章

随机推荐