Tasks added to OrderedMemoryAwareThreadPoolExecutor may be lost in some
cases. See #234
This commit is contained in:
parent
cb931bfb92
commit
b09bf5b1fb
@ -295,9 +295,12 @@ public class OrderedMemoryAwareThreadPoolExecutor extends
|
||||
|
||||
@Override
|
||||
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 (;;) {
|
||||
@ -324,6 +327,10 @@ 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