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()
在之前提到的,线程是可以忽略中断指令的,但是并这不是我们所期望的行为