0

1)如果内部静态类在调用 a 之后Runnable修改外部单例中的静态,是否有可能阻塞?我正在考虑这样一种情况,即多个可运行文件同时对地图中的同一项目进行修改。多个 runnables在外部单例中以静态方式运行。ConcurrentHashMapCallableThreadPoolExecutor

Thread2)如果我做一个,callable会和runnable一样被调用val = myCallable.call()吗?它根据可调用的结果修改并发哈希映射。

4

2 回答 2

1
  1. 除了运行静态初始化器时,Java 永远不会隐式阻塞。

  2. call()是一个普通的方法调用,将在调用线程中同步运行,就像任何其他方法调用一样。

于 2013-08-20T15:18:01.810 回答
1
  1. ConcurrentHashMap被设计为非阻塞的,尽管如果同时发生对同一哈希段的多个更新,则可能会发生争用。
  2. 是的。
于 2013-08-20T15:18:04.813 回答