primegenerator.java
来自「java concurrency in practice 源码. JAVA」· Java 代码 · 共 54 行
JAVA
54 行
package net.jcip.examples;import static java.util.concurrent.TimeUnit.SECONDS;import java.math.BigInteger;import java.util.*;import java.util.concurrent.*;import net.jcip.annotations.*;/** * PrimeGenerator * <p/> * Using a volatile field to hold cancellation state * * @author Brian Goetz and Tim Peierls */@ThreadSafepublic class PrimeGenerator implements Runnable { private static ExecutorService exec = Executors.newCachedThreadPool(); @GuardedBy("this") private final List<BigInteger> primes = new ArrayList<BigInteger>(); private volatile boolean cancelled; public void run() { BigInteger p = BigInteger.ONE; while (!cancelled) { p = p.nextProbablePrime(); synchronized (this) { primes.add(p); } } } public void cancel() { cancelled = true; } public synchronized List<BigInteger> get() { return new ArrayList<BigInteger>(primes); } static List<BigInteger> aSecondOfPrimes() throws InterruptedException { PrimeGenerator generator = new PrimeGenerator(); exec.execute(generator); try { SECONDS.sleep(1); } finally { generator.cancel(); } return generator.get(); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?