2011-07-05 20 views
1

我正在考慮將任務從我的主程序分離到新的(java)線程。第二項任務可能是資源消耗(這引起了對主程序「幸福」的擔憂)。將任務分離到新的Java線程與新的進程

將第二個任務作爲一個完整的獨立進程運行(就好像我是從命令行調用它),還是在新的java線程中運行它有區別?

This link瞭解了Solaris中底層線程實現(Java和內核線程之間的1-1映射)。

在Linux上我能期待什麼?

謝謝,

沙龍

+0

你是什麼意思「有沒有區別」?你的意思是爲了實現它的代碼有所不同?或者,你的意思是機器資源如何受到影響? – Erik

回答

3

一般而言,運行作爲一個單獨的過程比不運行它作爲一個單獨的線程需要的任務的較重的分離。如果這些任務需要共享內存中的狀態,那麼這會促使您轉向基於線程的實現。否則,一個單獨的過程可能是有道理的。

您提到的「福祉」問題 - 這是一個真正的問題。如果任務在邏輯上是可分離的,那麼在這裏使用單獨的進程是有意義的,因爲您不希望資源密集型進程打破另一個進程。不同的負載特徵通常意味着您希望能夠將一項任務拉出並將其移至可更好地支持該任務的基礎架構。

我不認爲線程實現細節應該是驅動因素。使用進程和使用線程之間的決定生活在更高層次。

2

東西,你可以考慮:

  1. 他們之間有任何溝通。如果是,那麼請記住,進程間通信比線程間通信複雜。
  2. 如果有可能通過將第二項任務分離到另一臺機器(甚至可能在將來甚至)而不是分離到一個過程中來實現性能可能是有益的。
  3. 將它們分離爲2個過程會增加部署/管理問題嗎?