我有一个 ExecutorService,用于对某些文本进行多线程处理,应用于给定文本 block 的工作单元被定义为返回有效负载的 ParserCallable。
所以我有一个 列表>列表;
通过将工作 block 交给每个 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,还没有。
关于java - 如何在返回 Futures 的 Java ExecutorService 中调试 Callable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24191762/