java线程复习3(线程的中断)

package MyThread.Test3;

import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;

/*
 * Create by dapeng on 2018/2/2
 */
public class PrimeGenerator extends Thread {
    @Override
    public void run() {
        long number = 2;
        while(true){
        if(isPrime(number)){
            System.out.println("The number " + number +"is prime");
        }
        if(isInterrupted()){
            System.out.println("The PrimeGenerator has been interrupted");
            return ;
        }
        number ++;
    }

    }
    private boolean isPrime(long number){
        if(number <= 2){
            return false;
        }
        for(long i = 2 ; i < number/2 ; i ++){
            if(number % i == 0){
                return true;
            }
        }
        return false;
    }
}
package MyThread.Test3;

/*
 * Create by dapeng on 2018/2/2
 */
public class Main {
    public static void main(String[] args) {

        Thread prime = new PrimeGenerator();
        prime.start();
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        prime.interrupt();
    }
}

需要在Prime中设置函数 检查是否产生中断isInterrupted()

在需要中断的时候prime.interrupt()

在之前提到的,线程是可以忽略中断指令的,但是并这不是我们所期望的行为

原文地址:https://www.cnblogs.com/da-peng/p/8403858.html