我有一个ExecutorService,我用它来多线程处理一些文本,应用于给定文本块的工作单元被定义为我的ParserCallable,它返回一个Payload。
所以我有一个
List<Future<PayLoad>> list;
它通过将工作块传递给每个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以解决我遇到的一些错误?根据我的代码,我不确定如何进入这些Callable之一。
1条答案
按热度按时间9q78igpj1#
您需要在可调用对象本身中设置一个断点。
从计算机科学理论的Angular 来看,可以实现平滑的调试(毕竟,为什么你的语言关心操作是sync还是bloc?),但我不相信这在任何主流语言中都得到支持,比如Java。