stop() ;
这个 thread.stop();方法,官方不推荐使用,因为难以控制,stop()会使线程立即停止,所以没有办法控制,线程中的数据的变化。此方法已被弃用,在对线程内数据控制没有把握的时候禁止使用。
interpret()
interpret()方法实际上只是给当前线程加了一个停止的标识,至于什么时候停止线程完全有我们自己去控制比较灵活。
在讲述interpret()之前,先带大家了解一下另外两个api:
interpreted();// 静态方法 ,注意判断的是当前正在运行的线程停止的标识,其二,对停止标识,调用后会擦除。
isInterpreted();//判断的是当时线程的停止的标识
举例说明:
public static void main(String[] args) {
/**
*第一种方法
*/
Thread thread = new Thread(new ThreadGroup("alibaba"), () -> {
for (int i = 0; i < 100; i++) {
try {
TimeUnit.SECONDS.sleep(1000);
} catch (InterruptedException e) {
break;// 当线程处于waiting或者 timed_waiting状态时,执行interpret()会抛 InterruptedException
// 因此我们可以在抛异常的时候,停止线程
}
System.out.println("----" + i);
}
}, "alibaba");
thread.start();
thread.interrupt();
/**
*第二种方法
*/
Thread thread2 = new Thread(new ThreadGroup("alibaba"), () -> {
for (int i = 0; i < 100; i++) {
System.out.println("----" + i);
if (Thread.currentThread().isInterrupted()) { // 使用isInterrupted()进行判断停止标识
break;
}
}
}, "alibaba");
thread2.start();
thread2.interrupt();
/**
*第三种方法
*/
Thread thread3 = new Thread(new ThreadGroup("alibaba"), () -> {
for (int i = 0; i < 100; i++) {
System.out.println("----" + i);
if (Thread.currentThread().interrupted()) { // 使用interrupted()进行判断停止标识
break;
}
}
}, "alibaba");
thread3.start();
thread3.interrupt();
}
、