Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
监视Java 8 ForkJoinPool_Java_Concurrency_Java.util.concurrent - Fatal编程技术网

监视Java 8 ForkJoinPool

监视Java 8 ForkJoinPool,java,concurrency,java.util.concurrent,Java,Concurrency,Java.util.concurrent,是否有一种方法可以监控随着时间的推移正在做什么,特别是如何有效地执行 执行子任务需要多少时间 其中一个子任务比其他子任务长吗 他们是并行执行的吗 应用于CountedCompleter javadoc中的触发器示例,监控工具会告诉我,PacketSender完成受到HeaderBuilder的限制,HeaderBuilder首先启动,但需要13秒,而BodyBuilder需要4秒,然后才完成 我寻找这样一个工具,主要是作为一个Java代理,它不会用不必要的统计数据污染我的生产代码,但什么也找

是否有一种方法可以监控随着时间的推移正在做什么,特别是如何有效地执行

  • 执行子任务需要多少时间
  • 其中一个子任务比其他子任务长吗
  • 他们是并行执行的吗
应用于CountedCompleter javadoc中的触发器示例,监控工具会告诉我,
PacketSender
完成受到
HeaderBuilder
的限制,HeaderBuilder首先启动,但需要13秒,而
BodyBuilder
需要4秒,然后才完成

我寻找这样一个工具,主要是作为一个Java代理,它不会用不必要的统计数据污染我的生产代码,但什么也找不到

感谢您的帮助

最好的(也是现实中唯一的)方法是使用“监视”方法调用,并记录可以收集用于统计分析的开始和结束时间戳和上下文


我已经习惯了很好的效果,可以推荐它,但任何这样的库都应该有效。

就我所知,这是一个好问题,他们必须在内部使用一些东西来测试这一点……你好@Eugene,是的,这也是我的想法。让我们看看Aleksey Shipilëv()在FJP for Java7上做了一个基准测试。我记得结果很糟糕。我没有看到Java8的基准。为了监控FJ类,您需要从zip文件中提取源代码,并添加自己的代码来跟踪情况。很多工作,因为FJ课程只专注于做工作,而不是提供统计数据。Hello@edharned,我不知道这个基准(发布链接?),但这不是真正的问题。为了避免从源代码中提取类,我计划在JDK中本机使用instrumentation API,以添加一些统计信息。这样,代码仍然专注于工作:)OK。您可以使用visualVM查看大量使用的类。除此之外,你总是可以建立自己的。但是,这是一个很大的问题,但是,我不知道你将如何用仪器来回答这三个问题。你好,波希米亚人,到目前为止,我通过使用javassist创建java代理来捕获计算的开始和结束,从而收集了各种统计数据。我现在的问题是正确地导出它,因为我在stdout中打印统计数据,生成了太多的数据。我还将研究AspectJ。