[英]Is it safe to share a stream instance among multiple threads?
我有一套钥匙。
class X {
private static String[] keys = {"k1", "k2", ... };
我必须从请求中提取键的值。 我想我可以使用map
来提取值并在某些请求处理方法中创建必要对象的列表,如下所示:
public void processReq(Request req) {
...
Stream.of(keys).map(k-> new Pack(k, req.getHeader(k)));
但是,为每个请求创建Stream
似乎是不必要的任务。 如果在多个线程之间共享Stream
实例是安全的,我想我可以像这样修改代码:
class X {
private static Stream<String> keys = Stream.of("k1", "k2", ...);
...
public void processReq(Request req) {
...
keys..map(k-> new Pack(k, req.getHeader(k)));
那么,像这样在多个线程之间共享Stream
实例是否安全?
流即使在同一线程中也不能被多次使用。 如果要收藏,请使用列表(或数组)
private static final List<String> keys = Arrays.asList("k1", "k2", ...);
可以多次使用。
List<Pack> packs = keys.stream()
.map(k-> new Pack(k, req.getHeader(k)))
.collect(Collectors.toList());
在您的代码中,大部分时间都花在了new Pack
或req.getHeader
上。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.