(一)线程管理_3---中断一个线程

来源:互联网 发布:门窗算料优化软件 编辑:程序博客网 时间:2024/06/05 00:42

中断线程

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()方法


0 0
原创粉丝点击