在java中运行多少个线程?
发布时间:2020-12-15 01:59:58 所属栏目:Java 来源:网络整理
导读:我有这个绝妙的主意,可以加快生成36个文件所需的时间:使用36个线程!不幸的是,如果我用36个线程/会话启动一个连接(一个j2ssh连接对象),那么一切都比我一次执行每个线程要多得多. 现在,如果我尝试创建36个新连接(36个j2ssh连接对象),那么每个线程都有一个单
我有这个绝妙的主意,可以加快生成36个文件所需的时间:使用36个线程!不幸的是,如果我用36个线程/会话启动一个连接(一个j2ssh连接对象),那么一切都比我一次执行每个线程要多得多.
现在,如果我尝试创建36个新连接(36个j2ssh连接对象),那么每个线程都有一个单独的连接到服务器,要么我的内存异常(不知何故程序仍然运行,并成功结束其工作,比时间慢我一个接一个地执行一个线程). 那么该怎么办?如何找到我应该使用的最佳线程数? 解决方法
您可以使用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(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |