Java 如何使用多线程从文本文件读取输入

Java 如何使用多线程从文本文件读取输入,java,multithreading,Java,Multithreading,我的文件名为input.txt,包含数据 PTPCNPHI-NT4015 PTPCBPHI-NT4016 PTPCBPHI-NT4017 PTPCBPHI-NT4018 ...etc PTPCNPHI-NT4015---是我正在连接并在单个存储上执行操作(备份)的存储名 我希望我的逻辑必须与多个线程并行运行所有存储大多数情况下,最好的方法是只有一个线程从文件中实际读取,因为并行读取几乎没有好处。一旦读取了输入,就可以将其交给工作线程进行处理 根据输入是否适合您的可用内存,多线程部分可以采用

我的文件名为input.txt,包含数据

PTPCNPHI-NT4015 
PTPCBPHI-NT4016
PTPCBPHI-NT4017
PTPCBPHI-NT4018
...etc
PTPCNPHI-NT4015---是我正在连接并在单个存储上执行操作(备份)的存储名


我希望我的逻辑必须与多个线程并行运行所有存储

大多数情况下,最好的方法是只有一个线程从文件中实际读取,因为并行读取几乎没有好处。一旦读取了输入,就可以将其交给工作线程进行处理


根据输入是否适合您的可用内存,多线程部分可以采用不同的方式完成:

  • 如果输入适合内存,则可以创建一个任务,然后为输入中的每个条目添加一个新任务。池将对所有输入进行排队,并将它们提取到工作线程
  • 如果输入不适合内存,这种方法可能是合适的,其中生产者是基于文件内容“生产”输入的单线程,并且有多个消费者处理输入

您为解决此问题付出了哪些努力?文件有多大?对于多线程需求,您有真正的用例吗?你尝试了什么,什么不起作用?好的..我明白你的意思。有没有其他方法来解决这个问题。我有一个想法:读取整个文件并将其保存在一个数据结构(线程安全DS)中,然后我将应用多个线程在其上运行。我添加了一个关于如何执行多线程的部分。您编写的是一种可能的方法,如果输入适合您的可用内存,它应该可以工作。无论如何,主要的一点是,通常最好在一个线程中读取文件,并且只在多个线程中执行后续处理,而您的评论已经遵循了这个建议。