小编Den*_*ang的帖子

Amazon SQS 是否有任何服务级别协议 (SLA)?例如,它的正常运行时间

作为主题。我尝试从 RabbitMQ 迁移到 SQS。想知道是否有任何正常运行时间保证或类似保证。我所能发现的是,Amazon SQS 将消息存储在跨给定区域的所有可用区的分布式存储中。这是否意味着 SQS 与 AWS 区域一样可靠,或者大多数时候可靠性达到 99.9%(或更好)?

amazon-sqs amazon-web-services

4
推荐指数
1
解决办法
5383
查看次数

在Brian Goetz的Java Concurrency In Practice中,为什么在Memoizer中检查了两次(f == null)

Brian Goetz的Java Concurrency实践提供了一个用于并发使用的高效可伸缩缓存的示例.显示类Memoizer(第108页)实现的示例的最终版本显示了这样的缓存.我想知道为什么有一个内部和外部检查if(f == null).第二个没有任何意义,因为:

  1. 前面有一个检查,前面的最后一步肯定会从cache.putIfAbsent(arg,ft)中返回一个非空值.
  2. 第二次检查中的ft.run()没有任何意义,因为此后会立即调用f.get().

这是Memoizer的代码:

public class Memoizer<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 Memoizer(Computable<A, V> c) { this.c = c; }

public V compute(final A arg) throws InterruptedException {
    while (true) {
        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 thread-safety concurrenthashmap java.util.concurrent

2
推荐指数
1
解决办法
409
查看次数