debugging 如何在Java ExecutorService中调试返回Futures的Callable

bsxbgnwa  于 2023-10-24  发布在  Java
关注(0)|答案(1)|浏览(134)

我有一个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之一。

9q78igpj

9q78igpj1#

您需要在可调用对象本身中设置一个断点。
从计算机科学理论的Angular 来看,可以实现平滑的调试(毕竟,为什么你的语言关心操作是sync还是bloc?),但我不相信这在任何主流语言中都得到支持,比如Java。

相关问题