Java中要运行多少个线程?

我有一个绝妙的主意,可以加快生成36个文件所需的时间:使用36个线程!不幸的是,如果我j2ssh使用36个线程/会话启动一个连接(一个连接对象),那么与每次执行每个线程相比,所有事情的滞后性更大。

现在,如果我尝试创建36个新连接(36个j2ssh连接对象),则每个线程都有一个单独的服务器连接,要么我退出内存异常(以某种方式程序仍然运行,并成功结束工作,但速度比我慢依次执行一个线程)。

那么该怎么办?如何找到我应该使用的最佳线程号?因为Thread.activeCount()在开始我的36线程之前是3?我正在使用联想笔记本电脑英特尔酷睿i5。

回答:

您可以使用来将其范围缩小到更合理的线程数ExecutorService。您可能想要使用接近可用处理器核心数量的一些东西,例如:

int threads = Runtime.getRuntime().availableProcessors();

ExecutorService service = Executors.newFixedThreadPool(threads);

for (int i = 0; i < 36; i++) {

service.execute(new Runnable() {

public void run() {

// do what you need per file here

}

});

}

service.shutdown();

以上是 Java中要运行多少个线程? 的全部内容, 来源链接: utcz.com/qa/403246.html

回到顶部