`

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 求指定范围内素数的个数

    Java 求指定范围内素数的个数,接受用户从键盘输入所求范围,计算出该范围内素数的个数。

    Java开发技术大全(500个源代码).

    ThreadImRunnable.java 继承Runnable接口实现多线程 mulThread.java 创建多个线程对象的类 demoJoin.java 演示使用join()以确保主线程最后结束 clicker.java 一个计数用的线程类 demoPri.java 调用上面这个类...

    java范例开发大全源代码

     实例100 输出指定范围的素数 128  实例101 我出现了几次 129  实例102 算术表达式求值器 129  实例103 字符串对齐调整器 137  实例104 字符串的加密 139  实例105 使用正则表达式验证电话号码的...

    java范例开发大全

    第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载(线程等待和通报) 410 实例225 模拟淘宝...

    Java范例开发大全 (源程序)

     第13章 多线程编程(教学视频:121分钟) 405  13.1 多线程的五种基本状态 405  实例222 启动线程 405  实例223 参赛者的比赛生活(线程休眠唤醒) 407  实例224 资源搜索并下载(线程...

    Java范例开发大全(全书源程序)

    第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载(线程等待和通报) 410 实例225 ...

    java范例开发大全(pdf&源码)

    第13章 多线程编程(教学视频:121分钟) 405 13.1 多线程的五种基本状态 405 实例222 启动线程 405 实例223 参赛者的比赛生活(线程休眠唤醒) 407 实例224 资源搜索并下载(线程等待和通报) 410 实例225 模拟淘宝...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例143 使用线程池优化多线程编程 186 实例144 Object类中线程相关的方法 187 实例145 哲学家就餐问题 189 实例146 使用信号量实现线程同步 190 实例147 使用原子变量实现线程同步 191 实例148 使用事件分配线程...

Global site tag (gtag.js) - Google Analytics