如何通过多个线程同时从BufferedReader
读取。
答案 0 :(得分:6)
好吧,你将无法让实际同时执行阅读。但是,您可以:
您想一次读取行还是任意字符块?
答案 1 :(得分:0)
如果所有线程都要读取文件中的所有行,那么您应该为每个线程创建一个单独的缓冲读取器。如果每个线程一次处理一行(并且行的顺序无关紧要),那么您应该使用生产者/消费者模型,其中只有一个线程实际从文件中读取并将工作负载放在{{ 3}},而其他线程定期删除工作负载并处理它们。请注意,如果将N行读入列表,则可以重置锁定开销,然后将列表放入阻塞队列,而不是将每条单独的行直接放入阻塞队列,因为这样可以读取多行/通过单个同步操作提取...将每一行直接放入/移出队列将是非常低效的,特别是如果处理它们相当快。