我有一个ExecutorService,用于对某些文本进行多线程处理,并将要应用于给定文本块的工作单元定义为返回有效载荷的ParserCallable。
所以我有一个
列表>列表;
通过将大量工作交给每个ParserCallable来填充。
我想在这种多线程环境中调试ParserCallable,并且我不关心哪一个,但是我不确定如何从我的代码中执行任何ParserCallable的执行。
看起来像
List<Future<PayLoad>> list = new ArrayList<Future<PayLoad>>();
ExecutorService executor = Executors.newFixedThreadPool(25);
for (int i = 0; i < blocks_of_work.size(); i++) {
Callable<PayLoad> worker = new ParserCallable(blocks_of_work.get(i));
Future<PayLoad> submit = executor.submit(worker);
list.add(submit);
}
如何调试任何给定的ParserCallable以便解决我遇到的一些错误?根据我的代码,我不确定如何进入这些可调用对象之一。
最佳答案
您需要在可调用对象本身中放置一个断点。
从计算机科学理论的角度来看,可以启用顺畅的调试(毕竟,为什么您的语言在乎操作是同步还是异步?),但是我不相信任何主流语言(如Java)都支持此功能。