void checkIfFinished(SearchPerformer performer) { SearchTask pendingTask = null; synchronized (tasks) { Iterator<SearchTask> it = tasks.iterator(); while (it.hasNext() && pendingTask == null) { SearchTask task = it.next(); if (task.getToken() == performer.getToken() && !task.isStopped()) { pendingTask = task; } if (task.isStopped()) { it.remove(); } } } if (pendingTask == null) { onFinished(performer.getToken()); } }