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

标签 java multithreading debugging future executorservice

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

相关文章:

multithreading - 在多线程进程上调用 fork

jquery - 在 Google Chrome 中,除了元素检查器之外,还有更好/其他的方法来调试 jQuery 吗?

c# - 从 MethodInfo 打印方法的完整签名

xcode - Xcode中 'breakpoint'标记的颜色是什么意思

java - 检查 Java 是否安装了 Bash

java - 如何使用java中的开发者api获取我的微博(中国SNS)推文列表?

java - 使用 hashmap 将所有子字符串作为键并将它们的出现作为值

c# - bool 属性 Getter 和 Setter 锁定

java - Android Ping 命令在无法访问的服务器上死机

javascript - 在一个移动市场上上传应用程序时出错