java - 动态优化线程数

标签 java multithreading io web-crawler

我有两个不做太多计算的 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/

相关文章:

java - 为什么Java repaint()方法不重画?我的代码是正确的

java - 如何在后台运行自定义平台特定代码?

java - 多线程服务器: SwingWorker Vs Thread?

c# - nUnit Assert.That委托(delegate)并发问题

java - 在Java中读取图像文件

python - 如何使用 exec 命令将字节数据从 golang 发送到 python?

java - 解释 mongostat 中的 mongo 故障指标

java - 在编译时有条件地删除 Java 方法

c++ - TCP - 如何关闭在线程内创建的客户端 -C++

Haskell:无法使用 "map putStrLn"?