HashMap中的PipedOutputStream用于线程

时间:2011-12-01 14:20:56

标签: java multithreading iostream

我有几个在后台运行的线程。他们确实共享一个共同的HashMap。 是否可以(安全地)存储PipedOutputStream

我有以下情况:

当第一个后台线程收到特定事件时,它应该从一个巨大的文件中读取文本数据到缓冲区。

应该以某种方式通知第二个后台线程(它们是独立的),然后在缓冲区(管道)到达时从缓冲区中读取数据。

因为所有线程都可以访问HashMap,所以可以存储所有流吗?

2 个答案:

答案 0 :(得分:0)

您可以使用ConcurrentHashMap。我觉得在这里使用Pipe没什么意义,因为操作系统会在你正在阅读的地方之前读取文件。

答案 1 :(得分:0)

HashMap未同步,因此您必须添加逻辑或使用同步集合。至于流,你只能写一个OutputStream而只能从一个InputStream读取,你可以从一个线程写入并从另一个线程读取没有问题。