Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class VolatileCachedFactorizer implements Servlet {
- private volatile OneValueCache cache =
- new OneValueCache(null, null);
- public void service(ServletRequest req, ServletResponse resp) {
- BigInteger i = extractFromRequest(req);
- BigInteger[] factors = cache.getFactors(i);
- if (factors == null) {
- factors = factor(i);
- cache = new OneValueCache(i, factors);
- }
- encodeIntoResponse(resp, factors);
- }
- }
- class OneValueCache {
- private final BigInteger lastNumber;
- private final BigInteger[] lastFactors;
- public OneValueCache(BigInteger i,
- BigInteger[] factors) {
- lastNumber = i;
- lastFactors = Arrays.copyOf(factors, factors.length);
- }
- public BigInteger[] getFactors(BigInteger i) {
- if (lastNumber == null || !lastNumber.equals(i))
- return null;
- else
- return Arrays.copyOf(lastFactors, lastFactors.length);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement