Java 7 多线程计算某个范围内的质数

不多说了,看代码

通用类
package java7.concurrency.math;

/**
 *  This class generates prime numbers until is interrupted
 */
public class PrimeGenerator extends Thread{
	private long numberRange;
	
	public PrimeGenerator(long numberRange) {
		this.numberRange = numberRange;
	}
	
	/**
	 *  Central method of the class
	 */
	@Override
	public void run() {
		long number=2L;
		
		// This bucle never ends... until is interrupted
		while (true) {
			if (isPrime(number)) {
				System.out.printf("Number %d is Prime\n",number);
			}
			
			// When is interrupted, write a message and ends
			if (isInterrupted()) {
				System.out.printf("The Prime Generator has been Interrupted\n");
				return;
			}
			
			if (number>=numberRange) {
				return;
			}
			
			number++;
		}
	}

	/**
	 *  Method that calculate if a number is prime or not
	 * @param number : The number
	 * @return A boolean value. True if the number is prime, false if not.
	 */
	private boolean isPrime(long number) {
		if (number <=2) {
			return true;
		}
		for (long i=2; i<number; i++){
			if ((number % i)==0) {
				return false;
			}
		}
		return true;
	}

}



测试类
package java7.concurrency.basic;

import java.util.concurrent.TimeUnit;
import java7.concurrency.math.PrimeGenerator;

public class PrimeTest {
	public static void main(String[] args) {

		// Launch the prime numbers generator
		Thread task=new PrimeGenerator(200);
		task.start();
		
		// Wait 1 seconds
		try {
			TimeUnit.SECONDS.sleep(1);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		// Interrupt the prime number generator
		task.interrupt();
	}
}


你可能感兴趣的:(java 7)