str*_*ash -1 java algorithm collections java-8
我试过类似的东西
Thread
.getAllStackTraces()
.keySet()
.stream()
.map(
$->{
System.out.println
($.getStackTrace());
return $;
});
Run Code Online (Sandbox Code Playgroud)
我觉得这不是最好的方法.还有其他方法吗? 最简单的方法是什么?使用Stream API.(需要打印整个堆栈跟踪)
您知道吗,Thread.getAllStackTraces()
返回Map
已包含所有堆栈跟踪的内容?迭代Thread
密钥集,调用Thread.getStackTrace()
它们中的每一个,不仅浪费资源,而且还增加了获得较少有用结果的机会,因为线程可能在迭代时终止,导致空堆栈跟踪,而Map
包含在您调用时创建的快照getAllStackTraces()
.
您可以简单地迭代值:
Thread.getAllStackTraces().values().stream()
.flatMap(Arrays::stream)
.forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)
虽然这满足了仅打印所有堆栈跟踪的要求,但这种未格式化的输出不太可能有用.
您可能更喜欢:
Thread.getAllStackTraces().forEach((t,st) -> {
System.out.printf("Thread %4d %-20s %13s pri=%d%n",
t.getId(), t.getName(), t.getState(), t.getPriority());
Arrays.stream(st).forEachOrdered(ste -> System.out.println("\tat "+ste));
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
445 次 |
最近记录: |