中断线程
Java提供了中断机制,可以在中断线程的执行,执行的线程会检查中断状态,可以选择忽略中断信号,也可以中断程序
动手实现
public class PrimeGenerator extends Thread { @Override public void run() { long number=1L; while(true) { if (isPrime(number)) { System.out.printf("Number %d is Prime\n", number); } // 检查是否中断 if (isInterrupted()) { System.out.printf("The Prime Generator has been Interrupted\n"); return; } number++; } } private boolean isPrime(long number) { if (number <= 2) { return true; } for (long i = 2; i < number; i++) { if ((number % 2) == 0) { return false; } } return true; } public static void main(String[] args) { Thread task=new PrimeGenerator(); task.start(); try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } //中断线程 task.interrupt(); } }
要点
线程属性中保存着一个boolean类型的值,用来标识线程是否已经被中断,当调用interrupt()方法时,将会设置这个属性为true,而调用isInterrupt()方法仅仅返回这个属性的值;
线程对象的 interrupt() 和 isInterrupt()方法的主要区别是: interrupt()方法将会设置为false, isInterrupt()方法仅仅返回这个属性值,推荐使用isInterrupt()方法
转载于:https://my.oschina.net/u/1387007/blog/343253
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/109660.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...