首页 > java > 3.通过线程门实现Java并发编程

3.通过线程门实现Java并发编程

2010年1月9日
13 views 评论 发表评论

发现素数

接口com.javaworld.primefinder.PrimeNumberSearcher定义了组件必须遵循的契约。该契约的功能有方法findPrimeNumbers()来指定,如列表1所示。

列表1.搜索契约

<

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

>1 PrimeNumberSource findPrimeNumbers(BigInteger lowerBound,
2 BigInteger upperBound);

com.javaworld.primefinder.PrimeNumberSource是结果句柄必须遵循的接口。它定义了一个方法 BigInteger nextPrime(),当被调用时,它应该返回搜索结果缓冲器中的下一个元素。如果结果缓冲器已经被用完,必须返回null值来表示没有结果可用。正如 此前所提到的,该方法的执行必须是线程安全的。

需要指出的是,该示例应用程序任务的重点是找出指定搜索范围内的素数;因此我们可以使用来自java.math.BigInteger类的 nextProbablePrime()方法。你可以在效用类com.javaworld.primefinder.PrimeUtil的一个静态方法中 封装调用该方法,示例程序如列表2所示。

列表2.在指定范围内发现首个素数的效用方法

<

Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/

>1 public static BigInteger findFirstPrime(long lowerBound, long upperBound)
2
3   {
4
5   BigInteger result;
6
7   BigInteger startPos = BigInteger.valueOf(lowerBound);
8
9   BigInteger nextProbablePrime;
10
11   if (startPos.isProbablePrime(…..)) // some reasonable accuracy
12
13   nextProbablePrime = startPos;
14
15   else nextProbablePrime = startPos.nextProbablePrime();
16
17   if (nextProbablePrime.longValue() >= upperBound)
18
19   result = null;
20
21   else result = nextProbablePrime;
22
23   return result;
24
25   }

现在已经定义了建立该解决方案的公共接口和工具,你现在可以对该任务进行细化了。我们将首先定义线程门的实现,它指定控制访问结果缓冲器的方式。

纯净水 java

  1. 目前还没有任何评论.
  1. 目前还没有任何 trackbacks 和 pingbacks.
  • 粤ICP备09032914号