Java面试题:多线程之如何停止一个线程?
2024-02-16 阅读 18
停止一个线程可以通过调用该线程的interrupt()方法来请求停止线程。当调用interrupt()方法时,线程会收到一个中断信号,可以在合适的地方通过检查线程的中断状态来决定是否停止线程的执行。通常可以在线程的run()方法中通过检查Thread.currentThread().isInterrupted()来判断线程是否被中断,并在需要停止线程时做出相应的处理。
另外,可以通过设置一个boolean类型的标志位来控制线程的执行,当需要停止线程时,将该标志位设置为true,线程在合适的地方检查该标志位并停止执行。这种方式需要保证标志位的可见性,可以通过volatile关键字来实现。
需要注意的是,直接调用Thread的stop()方法来停止线程是不推荐的,因为该方法可能会导致线程处于不一致的状态,出现不可预料的问题。因此,推荐使用interrupt()方法或标志位的方式来停止线程。
更新于 2024年04月14日