【发布时间】:2016-12-17 01:01:01
【问题描述】:
我正在尝试使用异步 java 客户端进行异步读取。我指的是中提到的示例 http://www.aerospike.com/docs/client/java/usage/async
我在下面使用 get 进行阅读 get(BatchPolicy 策略,RecordArrayListener 监听器,Key[] 键)
这适用于很少的请求,但是在发出近约 50000 个请求后,线程进入无限期等待状态。下面是其中一个线程的堆栈跟踪。
"pool-11-thread-1" - Thread t@56
java.lang.Thread.State: WAITING
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <737890e3> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
at java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:403)
at com.aerospike.client.async.AsyncCluster$BlockBufferQueue.getByteBuffer(AsyncCluster.java:114)
at com.aerospike.client.async.AsyncCluster.getByteBuffer(AsyncCluster.java:68)
at com.aerospike.client.async.AsyncCommand.execute(AsyncCommand.java:59)
at com.aerospike.client.async.AsyncMul tiExecutor.execute(AsyncMultiExecutor.java:36)
at com.aerospike.client.async.AsyncBatch$GetArrayExecutor.<init>(AsyncBatch.java:249)
at com.aerospike.client.async.AsyncClient.get(AsyncClient.java:568)
谁能建议我为什么会发生这种情况或如何防止这种情况发生。
【问题讨论】:
标签: java multithreading aerospike