@Override public void run() { pool.registerListener(this); setStartTimeToNow(); switch (searchMode) { case SEARCH_ALL: searchAll(); break; case EASIEST_HARDEST: case HARDEST_EASIEST: case SHORTEST_LONGEST: case LONGEST_SHORTEST: customSearch(); break; } if (!pool.containsQueries()) { taskCompleted(generated, getGeneratedPerSecond()); } pool.unregisterListener(this); }