我有两个不做太多计算的 IO 密集型进程:一个是获取和解析网页,另一个是将通过解析获得的一些数据存储在数据库中。这将在继续抓取网络时重复。
是否有一种方法可以动态地添加和减去处理每个任务的线程数,从而使运行整个系统的机器的性能达到最佳?该方法不应涉及基准测试,因为它将分发到我事先无法访问的许多机器。
请引导我找到一些资源或信息。
最佳答案
与其直接使用线程,不如创建一个 ThreadPool
,并在其中添加一些 Runnable
来完成实际工作。根据你的描述 CachedThreadPool可能合适。查看http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html有关如何实现的一些指南。
关于java - 动态优化线程数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16613997/