Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.88 KB | None | 0 0
  1. public class VolatileCachedFactorizer implements Servlet {
  2. private volatile OneValueCache cache =
  3. new OneValueCache(null, null);
  4.  
  5. public void service(ServletRequest req, ServletResponse resp) {
  6. BigInteger i = extractFromRequest(req);
  7. BigInteger[] factors = cache.getFactors(i);
  8. if (factors == null) {
  9. factors = factor(i);
  10. cache = new OneValueCache(i, factors);
  11. }
  12. encodeIntoResponse(resp, factors);
  13. }
  14. }
  15.  
  16. class OneValueCache {
  17. private final BigInteger lastNumber;
  18. private final BigInteger[] lastFactors;
  19.  
  20. public OneValueCache(BigInteger i,
  21. BigInteger[] factors) {
  22. lastNumber = i;
  23. lastFactors = Arrays.copyOf(factors, factors.length);
  24. }
  25.  
  26. public BigInteger[] getFactors(BigInteger i) {
  27. if (lastNumber == null || !lastNumber.equals(i))
  28. return null;
  29. else
  30. return Arrays.copyOf(lastFactors, lastFactors.length);
  31. }
  32. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement