factorizer.java

来自「java concurrency in practice 源码. JAVA」· Java 代码 · 共 51 行

JAVA
51
字号
package net.jcip.examples;import java.math.BigInteger;import javax.servlet.*;import net.jcip.annotations.*;/** * Factorizer * <p/> * Factorizing servlet that caches results using Memoizer * * @author Brian Goetz and Tim Peierls */@ThreadSafepublic class Factorizer extends GenericServlet implements Servlet {    private final Computable<BigInteger, BigInteger[]> c =            new Computable<BigInteger, BigInteger[]>() {                public BigInteger[] compute(BigInteger arg) {                    return factor(arg);                }            };    private final Computable<BigInteger, BigInteger[]> cache            = new Memoizer<BigInteger, BigInteger[]>(c);    public void service(ServletRequest req,                        ServletResponse resp) {        try {            BigInteger i = extractFromRequest(req);            encodeIntoResponse(resp, cache.compute(i));        } catch (InterruptedException e) {            encodeError(resp, "factorization interrupted");        }    }    void encodeIntoResponse(ServletResponse resp, BigInteger[] factors) {    }    void encodeError(ServletResponse resp, String errorString) {    }    BigInteger extractFromRequest(ServletRequest req) {        return new BigInteger("7");    }    BigInteger[] factor(BigInteger i) {        // Doesn't really factor        return new BigInteger[]{i};    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?