"CollectorThreadFactory-1-thread-1" prio=6 tid=0x0518e000 nid=0x1f38 waiting on condition [0x04c1f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x24775900> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
at jp.terasoluna.fw.collector.concurrent.ArrayBlockingQueueEx.put(ArrayBlockingQueueEx.java:200)
at jp.terasoluna.fw.collector.AbstractCollector.addQueue(AbstractCollector.java:773)
at jp.terasoluna.fw.collector.AbstractCollector.addQueue(AbstractCollector.java:732)
at jp.terasoluna.fw.collector.file.FileCollector.call(FileCollector.java:134)
at jp.terasoluna.fw.collector.file.FileCollector.call(FileCollector.java:32)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
Locked ownable synchronizers:
- <0x2477c570> (a java.util.concurrent.ThreadPoolExecutor$Worker)
"Finalizer" daemon prio=8 tid=0x020d6400 nid=0xc2c in Object.wait() [0x04a2f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x29c822f8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:135)
- locked <0x29c822f8> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:151)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:189)
Locked ownable synchronizers:
- None
"Reference Handler" daemon prio=10 tid=0x020d1000 nid=0x14b0 in Object.wait() [0x0487f000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x29c82380> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:503)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
- locked <0x29c82380> (a java.lang.ref.Reference$Lock)
Locked ownable synchronizers:
- None
"main" prio=6 tid=0x0257e400 nid=0x1fb4 waiting on condition [0x0268f000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x247758e8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
at jp.terasoluna.fw.collector.concurrent.ArrayBlockingQueueEx.isEmpty(ArrayBlockingQueueEx.java:298)
at jp.terasoluna.fw.collector.AbstractCollector.hasNext(AbstractCollector.java:209)
at jp.co.seesoft.batch.csvtocsv001.CSVTOCSV001BLogic.execute(CSVTOCSV001BLogic.java:84)
at jp.terasoluna.fw.batch.executor.AbstractBatchExecutor.executeBatchClass(AbstractBatchExecutor.java:733)
at jp.terasoluna.fw.batch.executor.AbstractBatchExecutor.executeBatch(AbstractBatchExecutor.java:562)
at jp.terasoluna.fw.batch.executor.SyncBatchExecutor.main(SyncBatchExecutor.java:114)
①フレームワーク本体の改修
ArrayBlockingQueueExクラスのpollメソッドを以下の様に
オーバーライドして下さい。
※そのままコピペして頂ければと思います。
---
@Override
public E poll() {
queueLock.lock();
try {
E elm = super.poll();
if (elm != null) {