【发布时间】:2016-03-29 17:39:15
【问题描述】:
一般来说,我正在编写一个自定义流收集器,据我所知,它与一个供应商、一个累加器和一个组合器相结合。在我的客户收集器中,我意识到累加器不是线程安全的,所以我将组合器设置为null,将Collector.Characteristics 设置为IDENTITY_FINISH。代码可以通过编译,但是存在运行时异常,因为combiner不应该为null,NotNull注解已经说明了这一点。
我的问题是,如果我在我的收集器中提供一个组合器,Collector.Characteristics 是 IDENTITY_FINISH,累加器是并行(或同时)运行还是仅在一个线程中运行而没有竞争问题?
【问题讨论】:
-
如果你不希望你的collector被并行使用,你可以在实现combiner的时候抛出异常,但是只要你不报
CONCURRENT特性,累加器就会不需要是线程安全的AFAIK。
标签: parallel-processing java-8 java-stream collectors