Tag: concurrenthashmap

“在Java 8中构建时,未定义的引用:.. ConcurrentHashMap.keySet()”

我有一个项目,我用jdk 6,7,8构建这个项目,我的目标是1.6 当我构建jdk 8时,我收到此错误: Undefined reference: java.util.concurrent.ConcurrentHashMap.KeySetView java.util.concurrent.ConcurrentHashMap.keySet() 因为我在这行中有这个代码: final Iterator itr = hashMap.keySet().iterator(); 如何避免错误,我在互联网上进行了一些搜索,并且由于java 8改变了它的返回类型键集,我得到了错误。 这是任何解决方案。 我正在使用maven,而animal-sniffer-plugin会出现此错误,并出现签名错误。

ConcurrentHashMap.get()是否保证通过不同的线程看到以前的ConcurrentHashMap.put()?

ConcurrentHashMap.get() 保证通过不同的线程看到以前的ConcurrentHashMap.put() ? 我的期望是,并且阅读JavaDocs似乎表明了这一点,但我99%确信现实是不同的。 在我的生产服务器上,下面似乎正在发生。 (我已经记录了它。) 伪代码示例: static final ConcurrentHashMap map = new ConcurrentHashMap(); //sharedLock is key specific. One map, many keys. There is a 1:1 // relationship between key and Foo instance. void doSomething(Semaphore sharedLock) { boolean haveLock = sharedLock.tryAcquire(3000, MILLISECONDS); if (haveLock) { log(“Have lock: ” + threadId); Foo foo = map.get(“key”); log(“foo=” […]

同步局部变量

我注意到ConcurrentHashMap的compute和computeIfAbsent方法中有一个奇怪的构造: Node r = new ReservationNode(); synchronized (r) { //… } 考虑到JIT最有可能将其视为无操作,本地对象同步的重点是什么?

ConcurrentHashMap是否可能“死锁”?

我们遇到了ConcurrentHashMap一个奇怪问题,其中两个线程似乎在调用put() ,然后在方法Unsafe.park()内永远等待。 从外部看,它看起来像ConcurrentHashMap的死锁。 到目前为止,我们只看到过这种情况。 谁能想到任何可能导致这些症状的事情? 编辑 :相关线程的线程转储在这里: “[编辑]线程2”prio = 10 tid = 0x000000005bbbc800 nid = 0x921等待条件[0x0000000040e93000] java.lang.Thread.State:WAITING(停车) 在sun.misc.Unsafe.park(原生方法) – 停车等待(java.util.concurrent.locks.ReentrantLock $ NonfairSync) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:747) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:778) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1114) at java.util.concurrent.locks.ReentrantLock $ NonfairSync.lock(ReentrantLock.java:186) at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262) at java.util.concurrent.ConcurrentHashMap $ Segment.put(ConcurrentHashMap.java:417) at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:883) 在[编辑] “[编辑]线程0”prio = 10 tid = 0x000000005bf38000 nid = 0x91f等待条件[0x000000004151d000] java.lang.Thread.State:WAITING(停车) 在sun.misc.Unsafe.park(原生方法) – […]