加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在java中运行多少个线程?

发布时间:2020-12-15 01:59:58 所属栏目:Java 来源:网络整理
导读:我有这个绝妙的主意,可以加快生成36个文件所需的时间:使用36个线程!不幸的是,如果我用36个线程/会话启动一个连接(一个j2ssh连接对象),那么一切都比我一次执行每个线程要多得多. 现在,如果我尝试创建36个新连接(36个j2ssh连接对象),那么每个线程都有一个单
我有这个绝妙的主意,可以加快生成36个文件所需的时间:使用36个线程!不幸的是,如果我用36个线程/会话启动一个连接(一个j2ssh连接对象),那么一切都比我一次执行每个线程要多得多.
现在,如果我尝试创建36个新连接(36个j2ssh连接对象),那么每个线程都有一个单独的连接到服务器,要么我的内存异常(不知何故程序仍然运行,并成功结束其工作,比时间慢我一个接一个地执行一个线程).

那么该怎么办?如何找到我应该使用的最佳线程数?
因为在开始我的36个线程之前Thread.activeCount()是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();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读