我有几个在后台运行的线程。他们确实共享一个共同的HashMap
。
是否可以(安全地)存储PipedOutputStream
?
我有以下情况:
当第一个后台线程收到特定事件时,它应该从一个巨大的文件中读取文本数据到缓冲区。
应该以某种方式通知第二个后台线程(它们是独立的),然后在缓冲区(管道)到达时从缓冲区中读取数据。
因为所有线程都可以访问HashMap
,所以可以存储所有流吗?
答案 0 :(得分:0)
您可以使用ConcurrentHashMap。我觉得在这里使用Pipe没什么意义,因为操作系统会在你正在阅读的地方之前读取文件。
答案 1 :(得分:0)
HashMap未同步,因此您必须添加逻辑或使用同步集合。至于流,你只能写一个OutputStream而只能从一个InputStream读取,你可以从一个线程写入并从另一个线程读取没有问题。