X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fquery%2FQueryThread.java;h=5510944dc319265e7e033e38a5462e62b280ee16;hp=ab10efa0baab252a1ff5ef8b8485c313b2b32db1;hb=5f5747460a3330a1317395fedb60db33f6c00ab2;hpb=ceff53434e48f94c5d84ce12f3b1e21cabda457b diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryThread.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryThread.java index ab10efa0b..5510944dc 100644 --- a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryThread.java +++ b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/QueryThread.java @@ -22,6 +22,7 @@ class QueryThread extends Thread implements SessionThread { private Session session; private QuerySupport querySupport; private final QueryProcessor processor; + private final Semaphore requests; final private ArrayList tasks = new ArrayList(); // final private ArrayList own; @@ -54,6 +55,7 @@ class QueryThread extends Thread implements SessionThread { sleepers = processor.sleepers; querySupport = processor.querySupport; threadStates = processor.threadStates; + requests = processor.requests; // delayQueues = processor.delayQueues; // executors = processor.executors; // threadLocks = processor.threadLocks; @@ -98,6 +100,7 @@ class QueryThread extends Thread implements SessionThread { private boolean pumpTask() { if(!processor.freeScheduling.isEmpty()) { tasks.add(processor.freeScheduling.removeFirst()); + processor.queueLength.decrementAndGet(); return true; } return false; @@ -155,18 +158,7 @@ class QueryThread extends Thread implements SessionThread { threadStates[index] = ThreadState.SLEEP; - synchronized (querySupportLock) { - querySupportLock.wait(100); - - } - -// boolean woken = condition.await(10, TimeUnit.MILLISECONDS); -// if(!woken) { -// synchronized (querySupportLock) { -// if(!processor.freeScheduling.isEmpty()) -// System.err.println("some tasks are available!"); -// } -// } + requests.acquire(); sleepers.decrementAndGet();