首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在java中OS进程看起来比线程快

为什么在java中OS进程看起来比线程快
EN

Stack Overflow用户
提问于 2013-06-17 00:43:08
回答 1查看 158关注 0票数 4

我开发了一个多线程的java应用程序,它使用线程来处理一批工作。我有一个主线程,它将工作调度到不同的线程。一切工作正常。

现在,我更改了应用程序,允许它在多个java进程中运行,每个进程都像以前一样执行多线程处理。例如,我过去在一个java进程中有8个线程来处理8个作业,现在我可以有2个Java进程,每个Java进程还有4个线程来处理总共8个作业。

应用程序的模型是这样的:分派器将获取需要完成的工作,然后将它们分派到线程池。线程之间没有同步或通信。

我注意到在后一种方法中有相当大的性能提升,我想知道为什么。有人能对此发表一些见解吗?OS进程调度是否比java线程更高效?当我真的需要性能提升时,我是否应该将此作为一般的经验法则?谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-06-17 02:15:20

这真的取决于很多因素。首先,您看过这两种情况下的CPU和内存负载水平了吗?我预计在这两个进程的情况下,系统的负载会更大,因此工作速度会更快。

另一个原因可能是您只有两个不同的内存堆,这两个内存堆由两个单独的垃圾收集器清理。

另外,进程之间是如何通信的(文件、管道、队列、套接字等)?在多进程的情况下,您不能共享内存(除非您调用某些OS系统调用,这是有代价的)。在测量时间时,您是否考虑到了这一通信时间?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17135492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档