小编yin*_*ing的帖子

实践5.19中的Java并发

在JCIP书中,清单5.19存储器的最终实现。我的问题是:

  1. 由于原子putIfAbsent(),无尽的while循环在这里出现了吗?
  2. while循环是否应该放在putIfAbsent()的impl内部而不是客户端代码?
  3. 仅将putIfAbsent()包装起来,while循环是否应处于较小范围内?
  4. while循环的可读性差

码:

public class Memorizer<A, V> implements Computable<A, V> {
    private final ConcurrentMap<A, Future<V>> cache
            = new ConcurrentHashMap<A, Future<V>>();
    private final Computable<A, V> c;
    public Memorizer(Computable<A, V> c) { this.c = c; }
    public V compute(final A arg) throws InterruptedException {
    while (true) { //<==== WHY?
        Future<V> f = cache.get(arg);
        if (f == null) {
           Callable<V> eval = new Callable<V>() {
               public V call() throws InterruptedException {
                    return c.compute(arg);
               }
           };
           FutureTask<V> ft = new FutureTask<V>(eval); …
Run Code Online (Sandbox Code Playgroud)

java concurrency

6
推荐指数
1
解决办法
416
查看次数

kafka vs 编年史队列 vs 破坏者

任何人都可以在日志记录方面比较 kafka、编年史队列和干扰器之间的底层设计和性能?似乎 kafka 拥有大多数用户,但不要避免 GC。

java queue messaging apache-kafka

6
推荐指数
1
解决办法
1995
查看次数

标签 统计

java ×2

apache-kafka ×1

concurrency ×1

messaging ×1

queue ×1