2011-07-05 22 views
1

我正在考虑将任务从我的主程序分离到新的(java)线程。第二项任务可能是资源消耗(这引起了对主程序“幸福”的担忧)。将任务分离到新的Java线程与新的进程

将第二个任务作为一个完整的独立进程运行(就好像我是从命令行调用它),还是在新的java线程中运行它有区别?

This link了解了Solaris中底层线程实现(Java和内核线程之间的1-1映射)。

在Linux上我能期待什么?

谢谢,

沙龙

+0

你是什么意思“有没有区别”?你的意思是为了实现它的代码有所不同?或者,你的意思是机器资源如何受到影响? – Erik

回答

3

一般而言,运行作为一个单独的过程比不运行它作为一个单独的线程需要的任务的较重的分离。如果这些任务需要共享内存中的状态,那么这会促使您转向基于线程的实现。否则,一个单独的过程可能是有道理的。

您提到的“福祉”问题 - 这是一个真正的问题。如果任务在逻辑上是可分离的,那么在这里使用单独的进程是有意义的,因为您不希望资源密集型进程打破另一个进程。不同的负载特征通常意味着您希望能够将一项任务拉出并将其移至可更好地支持该任务的基础架构。

我不认为线程实现细节应该是驱动因素。使用进程和使用线程之间的决定生活在更高层次。

2

东西,你可以考虑:

  1. 他们之间有任何沟通。如果是,那么请记住,进程间通信比线程间通信复杂。
  2. 如果有可能通过将第二项任务分离到另一台机器(甚至可能在将来甚至)而不是分离到一个过程中来实现性能可能是有益的。
  3. 将它们分离为2个过程会增加部署/管理问题吗?