2017-01-06 41 views
0

我知道,使用processbuilder我們可以在java中創建一個進程,但是如何在進程內部創建一個線程?另外,如果我想在流程內創建多個線程,那麼最好的方法是什麼?在java中創建一個進程中的線程

在此先感謝。

+4

可能重複[進程和線程有什麼區別?](http://stackoverflow.com/questions/200469/what-is-the-difference-between-a-process-anda-a-線程) – Michael

+2

如果可能的話,我會使用'parallelStream()',或者如果沒有,則使用ExecutorService,創建原始線程不太可能是一個好主意,除非您真的知道自己在做什麼。 –

+0

我正在尋找新過程中的線程創建。 –

回答

1

我正在尋找新過程中的線程創建。

啓動後,啓動應用程序不控制新進程中的線程。新流程中的其他線程將在流程代碼決定時啓動。只有當你是其他進程的代碼的作者時,你才能夠改變它產生新線程的方式和時間。

0

與Java相關的進程和線程之間的區別在於線程在同一個JVM實例內運行,而進程在不同的JVM實例中運行。

例如,啓動同一個Java應用程序的兩個實例會產生兩個進程,每個進程都運行在它們自己的JVM中。儘管它們是相同的應用程序,但它們彼此獨立運行,除非應用程序包含它們之間的通信方式。

在不同進程中創建線程將是該進程的Java代碼的責任。如果您想在另一個JVM的代碼指導下在一個JVM中創建線程,則必須實現一個進程間控制機制(例如套接字,控制文件,RMI,JMX等)。

不知道你在不同進程中產生線程的原因,我只能假設你想要某種類型的隔離。如果您需要的是數據隔離,請考慮修改您的應用程序的體系結構,以提供內在的並遵循Peter Lawrey的comment中的建議之一。 ExecutorService的一個很好的起點是Java 8 Concurrency Tools: Threads and Executors