通常不会手动停止线程,会等任务执行完成自然停止。

直接暴力停止线程

java.lang.Thread#stop()
方法已标记为Deprecated
因为不安全、不合理,不了解对方的工作,不能粗暴停止。

通知、协作来停止

java.lang.Thread#interrupt
只能以中断通知来通知线程中断,被中断的线程通过检查中断标记位来决定是否停止工作
而工作线程中通过检查标记位的状态来判断是否继续进行工作

sleep期间能否感受到中断

能,如果sleep、wait等可以让线程进入阻塞的方法使线程休眠了,而处于休眠中的线程被中断,那么线程是可以感受到中断信号的,并且会抛出一个InterruptedException异常,同时清除中断信号,将中断标记位设置成false

感受到InterruptedException后的最好的处理方式

总的原则就是不能屏蔽中断请求

错误的停止线程的方式