一、线程中断的方法
线程中断方法主要是两种:
.isInterrupted()
是否为中断状态
interrupt()
设置为中断
线程中断,并非真正的线程中断,而只是将线程的中断状态标识设置为true,由线程自己根据状态标识进行相应的业务处理逻辑,而线程实际上还在进行。
要区别于InterruptedException异常
,一般的,线程会因为BlockingQueue#put、BlockingQueue#take、Object#wait、Thread#sleep
以上状态被打断而抛出异常,这个异常是真正的线程中断,而与线程的中断状态标识没有任何关系,标识状态依然为false。
所以,这就需要注意一个问题,千万不能捕获了InterruptedException而不做中断处理,否则业务逻辑依然以为你没有中断,依然走正常的异常逻辑
二、示例代码
@Test
public void testThread() throws InterruptedException {
testThread1();
testThread2();
}
private void testThread1() throws InterruptedException {
Thread thread1 = new Thread((