Tasks added to OrderedMemoryAwareThreadPoolExecutor may be lost in some
cases. See #234
This commit is contained in:
parent
192fbe0572
commit
beac1313a5
|
@ -294,9 +294,12 @@ public class OrderedMemoryAwareThreadPoolExecutor extends
|
|||
}
|
||||
|
||||
public void run() {
|
||||
boolean acquired = false;
|
||||
|
||||
// check if its already running by using CAS. If so just return here. So in the worst case the thread
|
||||
// is executed and do nothing
|
||||
if (isRunning.compareAndSet(false, true)) {
|
||||
acquired = true;
|
||||
try {
|
||||
Thread thread = Thread.currentThread();
|
||||
for (;;) {
|
||||
|
@ -323,6 +326,11 @@ public class OrderedMemoryAwareThreadPoolExecutor extends
|
|||
// set it back to not running
|
||||
isRunning.set(false);
|
||||
}
|
||||
|
||||
if (acquired && !isRunning.get() && tasks.peek() != null) {
|
||||
doUnorderedExecute(this);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user