Gre*_*dot 5 java file-io multithreading
我正在运行一个程序,我下载大文件,解析它们然后将我从文件中提取的数据写入另一个文件.
这些文件需要很长时间才能下载和解析,但写入任务平均只需要一分钟左右.我把它放在一起的解决方案是有三个三线程的fixedthreadpool.
ExecutorService downloadExecutor = Executors.newFixedThreadPool(3);
ExecutorService parseExecutor = Executors.newFixedThreadPool(3);
ExecutorService writeExecutor = Executors.newFixedThreadPool(3);
Run Code Online (Sandbox Code Playgroud)
下载池中的线程下载该文件,然后将新线程提交给解析器线程池,文件名作为参数.这是在线程本身内完成的.然后,下载线程将从文件URL列表中下载另一个文件.
一旦解析器线程完成了从文件中解析我想要的数据,它就会将包含数据的新线程提交给写线程池,然后将其写入.csv文件.
我的问题是,如果有一个更优雅的解决方案.我没有真正做过复杂的线程.由于我有很多文件要下载和解析,我不希望任何线程在任何时候都处于空闲状态.再次提出的想法是,由于解析文件可能需要一段时间,因此我不妨制作单独的线程,专门用于下载这些文件.