package net.jcip.examples; import java.util.*; import java.util.concurrent.*; /** * Memoizer2 *
* Replacing HashMap with ConcurrentHashMap * * @author Brian Goetz and Tim Peierls */ public class Memoizer2 implements Computable { private final Map cache = new ConcurrentHashMap(); private final Computable c; public Memoizer2(Computable c) { this.c = c; } public V compute(A arg) throws InterruptedException { V result = cache.get(arg); if (result == null) { result = c.compute(arg); cache.put(arg, result); } return result; } }