У меня есть следующие классы:Как использовать метод "removeIf" с помощью предиката в ArrayBlockingQueue
WorkerTask.java
public interface WorkerTask extends Task {
// Constants
public static final short WORKERTASK_SPIDER = 1;
public static final short WORKERTASK_PARSER = 2;
public static final short WORKERTASK_PRODUCT = 3;
public int getType();
}
WorkerPool.java
class workerPool {
private ThreadPoolExecutor executorPool_;
//----------------------------------------------------
public WorkerPool(int poolSize)
{
executorPool_ = new ThreadPoolExecutor(
poolSize,5,10,TimeUnit.SECONDS,
new ArrayBlockingQueue<Runnable>(10000000,false),
Executors.defaultThreadFactory()
);
//----------------------------------------------------
public void assign(WorkerTask workerTask) {
executorPool_.execute(new WorkerThread(workerTask));
}
//----------------------------------------------------
public void removeTasks(int siteID) {
executorPool_.getQueue().removeIf(...);
}
}
Я хочу вызовите метод removeTasks, чтобы удалить определенное количество ожидающих задач, но я не знаю, как использовать метод removeIf. В нем говорится: Удаляет все элементы этой коллекции, которые удовлетворяют заданному предикату, но я понятия не имею, как создать параметр Predicate. Есть идеи?