我正在为我的Java并发课程开发一个教程。目标是使用线程池并行计算素数。将线程递归添加到Java线程池
该设计是基于Eratosthenes筛。它有一个n布尔数组,其中n是您检查的最大整数,数组中的每个元素表示一个整数。真是素数,假不是素数,数组最初都是真的。
线程池与固定数量的线程一起使用(我们应该尝试使用池中的线程数并观察性能)。
线程被赋予一个整数倍来处理。线程然后在数组中找到第一个不是线程整数倍数的真实元素。线程然后在线程池中创建一个新的线程,该线程被给予找到的号码。
新线程形成后,现有线程继续将其整数的整数倍数设置为false。
主程序线程以整数'2'开始第一个线程,然后等待所有产生的线程完成。然后分析出素数和计算所需的时间。
我遇到的问题是线程池中线程越多,线程速度越快,线程越慢。它应该越快越好!
所有关于Java线程池的东西都会在主线程中创建n个工作线程,然后等待所有线程完成。我使用的方法是递归的,因为工作者可以产生更多的工作线程。
我想知道发生了什么问题,如果Java线程池可以递归使用。
继续使用线程方法,这是一种学习体验,当您完成后,您将对线程有所了解。谁关心Eratosthenes的筛子?许多专业程序员从不了解本页面的知识。只要记住,如果一个女人可以在9个月内有一个婴儿,并不意味着九个人可以做一个月! – 2010-06-24 23:51:30