`

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实现打印素数/质数程序

    虽然这个方法通常用于找出一定范围内的所有素数,但在这里我们只需要逐个检查自然数并判断是否为素数。 以下是简单的Java代码示例,用于打印小于特定数值的所有素数: ```java public class PrimeNumber { public...

    素数Java程序,用于Java第二版教材上的习题求Java素数

    Java作为一种广泛使用的编程语言,非常适合用来编写计算和处理素数的程序。这个压缩包文件“素数”可能包含了一个或多个Java源代码文件,用于解决Java第二版教材中的素数相关习题。以下将详细介绍Java编程中如何实现...

    java求素数的经典算法

    ### Java求素数的经典算法 #### 一、引言 素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的数。求解素数是计算机科学中的一个经典问题,特别是在密码学等领域有着重要的应用价值。Java作为一门流行...

    素数计算

    这个项目“素数计算”显然关注的是编写程序来识别和列出指定范围内的素数。 在描述中提到的“按条件计算”,可能指的是用户可以根据自己的需求设置特定的数值范围,比如从1到100,或者从1000到2000,然后程序会在这...

    uThreadPool线程池示例(查找0-1亿之间的质数任务)

    线程池是并发编程中的重要概念,特别是在Java和C++等多线程环境中,它能够有效地管理和调度线程资源,提高系统的效率。本示例中,我们关注的是一个基于`uThreadPool`实现的线程池,它用于执行查找0到1亿之间所有质数...

    求一亿内有多少个素数,能在你当前用的计算机上在有限时间内运行出结果的程序.

    标题中的问题涉及到的是计算理论和计算机编程中的一个经典议题——寻找一定范围内素数的数量。素数是大于1且除了1和它自身以外没有其他正因数的自然数,例如2、3、5、7等。在给定的范围内,如一亿(100,000,000),...

    打印出100以内的质数Java

    - **多线程**:在大型数据集上,可以考虑使用多线程并行处理,加快计算速度。 总结,打印100以内的质数是学习Java基础和算法的好练习。通过这个过程,你可以深入了解循环、条件语句、数学运算以及算法设计等核心...

    java代码-计算1亿以内素数

    这是一种古老而有效的算法,用于找出给定范围内所有素数。步骤如下: 1. 创建一个布尔数组,长度为n+1,所有元素初始化为true,表示0到n的所有数都是素数。 2. 从2开始遍历数组,如果当前数字为true,表示它是素数...

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

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

    Java输出n以内的所有素数

    在Java中,我们可以通过编写程序来找出指定范围内所有的素数。本篇文章将详细讲解如何利用Java实现这一功能,特别是通过“素数筛”算法。 一、素数筛简介 素数筛是一种寻找素数的高效算法,最著名的莫过于...

    JAVA程序设计习题及答案

    统计素数是指找出一定范围内的所有素数。在本题中,使用穷举法来统计 1 至 1 万共有多少个数是素数。 9. 读程序、写结果 读程序是指读取程序的输出结果,写结果是指将输出结果写入到文件或屏幕上。在本题中,使用 ...

    基于Java集合类的素数方阵求解.zip

    这通常通过埃拉托斯特尼筛法(Sieve of Eratosthenes)实现,这是一种高效找出一定范围内所有素数的方法。你可以创建一个boolean数组,初始化所有数为true,然后从2开始,将所有2的倍数标记为false,接着找到下一个...

    JAVA语言程序设计课后习题

    ### JAVA语言程序设计课后习题精解 #### 一、字符统计程序 ...以上对JAVA语言程序设计课后习题的总结,涵盖了从基础的数据类型操作到高级的面向对象编程和多线程技术,为学习JAVA语言提供了全面的实践指导。

    找小于100000的素数

    寻找特定范围内的素数是许多算法中的基础任务之一。 #### Java实现素数判断 在提供的代码中,作者通过两层循环实现了对小于100000的所有整数的素性判断。代码的关键逻辑如下: 1. **初始化**:首先定义了一个名为...

    求100以内的素数

    - **素数的高级算法**:如埃拉托斯特尼筛法(Sieve of Eratosthenes),可以在较大的范围内更高效地找出所有素数。 - **并行计算**:对于大数据集,可以考虑使用多线程或多进程技术来加速计算过程。 - **性能测试**...

    java小程序

    3. **求质数**:这是质数判断的一个变体,可能是要求生成一定范围内的所有质数。可以使用Sieve of Eratosthenes算法,它通过消除已知质数的倍数,有效地找出所有质数。 4. **递归求阶乘**:阶乘是一个数的所有小于...

    《Java程序设计实用教程(第3版)》例题

    4. **例02.12 输出指定范围内的素数**:素数检测是算法基础,通常使用循环和条件判断实现。学习者需要掌握循环结构,以及如何判断一个数是否为素数。 5. **例02.09 九九乘法表**:这是经典的控制流应用,涉及两层...

    河北工业大学Java实验

    此外,实验中涉及到的输入输出流、多线程和Socket通信等内容也是Java开发中的重要知识点,在后续的学习过程中将会有更深入的应用。希望学弟学妹们能够通过此次实验,打下坚实的Java编程基础,为今后的学习和发展奠定...

    Java 50道面试题和答案.docx

    Java编程语言在面试中常常会涉及各种问题,包括算法、数据结构、面向对象设计、异常处理、多线程等。上述文档中包含了五个Java编程题目,涵盖了递归、循环、数学逻辑、数组操作以及条件运算等多个知识点。 1. **...

Global site tag (gtag.js) - Google Analytics