background image

 
本篇文章的示例应用程序将解决一个经典老问题,即在指定范围的数字(例如从 1 到 100
万之间)找出所有可能的素数。确切的说,我们的任务就是实现一

软件

§组件,利用一个

方法获得指定范围内的所有素数。假定该组件的客户端要求该方法返回一个线程

安全

§

句柄,一旦其被调用的时候可以访问结果,同时完成在后台或以异步方式找出素数的任
务。还有一个条件是该操作必须提供一个阻塞方法来允许素数尽快的被访问或返回,这样
该客户端就不用必须在访问结果前等待搜索完成。为了简化这个任务,对句柄返回结果的
顺序没有添加限制条件。

 

 

  在 继 续 阅 读 本 篇 文 章 前 , 你 应 该 下 载 本 篇 文 章 的 代 码 文 件

(http://www.javaworld.com/javaworld/jw-03-2009 /threadgates-src.zip),然后在自己喜欢使用
的 IDE 中创建一个开发项目。该文件包含十个源文件,其结构如下所示:

1

  -src\

2
3

  -main\

4
5

  -java\

6
7

  -com\

8
9

  -javaworld\

10
11

  -primefinder\

12
13

  PrimeNumberSearcher.java

14
15

  PrimeNumberSource.java

16
17

  PrimeUtil.java

18
19

  ThreadGate.java

20
21

  PrimeSearchThread.java

22
23

  PartitionInfo.java

24
25

  PrimeNumberReader.java

26
27

  GatedPrimeNumberSearcher.java

28
29

  ConcurrentPrimeNumberSource.java

30
31

  -src\

32