我正在尝试运行CompletionService来执行线程数。这是我的代码
CompletionService<ReadProcess_MongoDB> taskCompletionService;
taskCompletionService = new ExecutorCompletionService<ReadProcess_MongoDB>(pool);
Collection<Callable<ReadProcess_MongoDB>> list = new LinkedList<Callable<ReadProcess_MongoDB>>();
list.add((Callable<ReadProcess_MongoDB>) new ReadProcess_MongoDB(0));
list.add((Callable<ReadProcess_MongoDB>) new ReadProcess_MongoDB(1));
Java在list.add上显示运行时错误 Eror :-(不能转换为java.util.concurrent.Callable)。
答案 0 :(得分:1)
在这一行
list.add((Callable<ReadProcess_MongoDB>) new ReadProcess_MongoDB(0));
您正试图 将new ReadProcess_MongoDB(0)
Callable<ReadProcess_MongoDB>
作为ReadProcess_MongoDB
。如果失败,那是因为您的Callable<ReadProcess_MongoDB>
类无法转换为Callable<ReadProcess_MongoDB>
;而这只能是因为你没有在那个班级中实现public class ReadProcess_MongoDB implements Callable<ReadProcess_MongoDB> {
//...
}
。
将其声明为
Callable
然后,您需要确保您的类实现Callable<T>
接口的方法。只有一个:call()
方法。
(在你自己的脑海中清楚地知道这确实是你想要的。你确定你不希望它为其他类型T
实现{{1}}吗?)
答案 1 :(得分:0)
java编译器说ReadProcess_MongoDB类不是java.util.concurrent.Callable类的子类。