涉及到线程中断的方法有以下三个:
-
public void interrupt():将线程的中断状态设置为true;
-
public static boolean interrupted():判断当前线程的中断状态;
-
public boolean isInterrupted():判断某个线程的中断状态
package org.iti.thread;
public class ThreadDemo_4 {
public static void main(String[] args) {
MThread mThread = new MThread("MThread");
mThread.start();
try {
Thread.sleep(5l);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(mThread.getName()+"当前中断状态为:" + mThread.isInterrupted());
mThread.interrupt();
System.out.println(mThread.getName()+"当前中断状态为:" + mThread.isInterrupted());
}
}
class MThread extends Thread {
public MThread(String threadName) {
super(threadName);
}
int i = 0;
@Override
public void run() {
while (!isInterrupted()) {
System.out.println("当前i的值为:" + i++);
}
}
}
输出结果:
当前i的值为:0
当前i的值为:1
当前i的值为:2
当前i的值为:3
当前i的值为:4
当前i的值为:5
当前i的值为:6
当前i的值为:7
当前i的值为:8
当前i的值为:9
当前i的值为:10
当前i的值为:11
当前i的值为:12
当前i的值为:13
当前i的值为:14
当前i的值为:15
当前i的值为:16
当前i的值为:17
当前i的值为:18
当前i的值为:19
当前i的值为:20
当前i的值为:21
当前i的值为:22
当前i的值为:23
当前i的值为:24
当前i的值为:25
当前i的值为:26
当前i的值为:27
当前i的值为:28
当前i的值为:29
当前i的值为:30
当前i的值为:31
当前i的值为:32
当前i的值为:33
当前i的值为:34
当前i的值为:35
当前i的值为:36
当前i的值为:37
当前i的值为:38
当前i的值为:39
当前i的值为:40
当前i的值为:41
当前i的值为:42
当前i的值为:43
当前i的值为:44
当前i的值为:45
当前i的值为:46
当前i的值为:47
当前i的值为:48
当前i的值为:49
当前i的值为:50
当前i的值为:51
当前i的值为:52
当前i的值为:53
当前i的值为:54
当前i的值为:55
当前i的值为:56
当前i的值为:57
当前i的值为:58
当前i的值为:59
当前i的值为:60
当前i的值为:61
当前i的值为:62
当前i的值为:63
当前i的值为:64
当前i的值为:65
当前i的值为:66
MThread当前中断状态为:false
当前i的值为:67
MThread当前中断状态为:true