如果一个内部静态可以在单个块中运行,如果用它作为可调用的包装器,它是否会修改单例的静态参数?

时间:2013-08-20 15:10:05

标签: java singleton runnable callable threadpoolexecutor

1)如果内部静态Runnable类在调用ConcurrentHashMap后修改外部单例中的静态Callable,是否有可能阻止它?我正在考虑一种情况,即同时通过多个runnable对地图中的同一项进行修改。多个runnable在外部单例中以静态ThreadPoolExecutor运行。

2)如果我执行Thread,是否可以在与runnable相同的val = myCallable.call()中调用callable?它根据可调用的结果修改concurrenthashmap。

2 个答案:

答案 0 :(得分:1)

  1. 除了运行静态初始值设定项之外,Java永远不会隐式阻止。

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

答案 1 :(得分:1)

  1. ConcurrentHashMap旨在实现非阻止,但如果同时发生对同一哈希段的多次更新,则可能会发生争用。