在 Akka in Action 书中它说
异常几乎不可能在开箱即用的线程之间共享,除非您准备构建大量基础设施来处理这个问题。
而且,据我所知,如果并行线程中发生异常,它将传播给调用者。如果这种机制可行,为什么不用常规线程来实现呢?我错过了什么吗?
编辑:我说的是这样的可能性:
public static void count() {
long count = 0;
try {
count = IntStream.range(1, 10)
.parallel()
.filter(number -> f(number)).count();
} catch(RuntimeException e) {
/* handle */
}
System.out.println("Count - " + count);
}
public static boolean f(final int number) {
if(Math.random() < 0.1) {
throw new RuntimeException();
}
return true;
}
parallel() 产生多个线程,当其中任何一个抛出 RuntimeException 时,该异常仍会在主线程上捕获,这似乎与书中的观点相反。
编辑 2:
互换的青春
相关分类