1)如果内部静态Runnable
类在调用ConcurrentHashMap
后修改外部单例中的静态Callable
,是否有可能阻止它?我正在考虑一种情况,即同时通过多个runnable对地图中的同一项进行修改。多个runnable在外部单例中以静态ThreadPoolExecutor
运行。
2)如果我执行Thread
,是否可以在与runnable相同的val = myCallable.call()
中调用callable?它根据可调用的结果修改concurrenthashmap。
答案 0 :(得分:1)
除了运行静态初始值设定项之外,Java永远不会隐式阻止。
call()
是一个普通的方法调用,它将在调用线程中同步运行,就像任何其他方法调用一样。
答案 1 :(得分:1)
ConcurrentHashMap
旨在实现非阻止,但如果同时发生对同一哈希段的多次更新,则可能会发生争用。