我需要创建一个从某些方面检索数据的计划任务,然后执行解析 - >然后操作 - >然后创建输出文件 - >然后发送输出文件
我想使用5个工作类:MainExecutor类,Retriever类,Reader类,Builder类,Sender类 主MainExecutor类将使用 ScheduledThreadPoolExecutor 来安排Retriever。
我想让这个应用程序可扩展。我是否需要将这些类(Reader,Builder,Sender)作为一个单独的线程?
我是否需要为每个人使用线程池?
实施此计划的最佳方式是什么?
答案 0 :(得分:0)
Retriever和Sender可能会阻止等待网络,Reader必须是IO密集型的,而Builder可能是CPU密集型的。所以是的,在不同的线程上运行它们是有意义的。对于所有这些,您只需要一个线程池。
这将使您的应用程序更具可扩展性,并且还可以提高性能(吞吐量)。缺点是你需要组织线程之间的通信。