Есть метод
public synchronized read(URL url)
. Он использует WebDriver selenium, а его объявление как "synchronized" почему-то не срабатывает... Чтоб обойти этот "баг", я пытаюсь создать пул очередности потоков следующим образом:
private static LinkedList<Runnable> pool;
..........................
public synchronized void read(URL url){
Runnable task = Thread.currentThread();
pool.add(task);
if (!pool.isEmpty() && pool.size()>1)
try { task.wait();
} catch (InterruptedException e1) {
e1.printStackTrace();
}
// body of method read
..........................
pool.removeFirst();
if (!pool.isEmpty()) {
Runnable first = pool.getFirst();
first.notify();
}
}
Таким образом получается
java.lang.IllegalMonitorStateException.
Как правильно организовать Thread pool?