2017-01-06 3 views
0

Ich weiß, mit Processbuilder können wir einen Prozess in Java erstellen, aber wie erstelle ich einen Thread in einem Prozess? Auch wenn ich mehrere Threads innerhalb eines Prozesses erstellen möchte, was ist der beste Weg, dies zu tun?Erstellen eines Threads in einem Prozess in Java

Vielen Dank im Voraus.

+4

Mögliche Duplikate von [Was ist der Unterschied zwischen einem Prozess und einem Thread?] (Http://stackoverflow.com/questions/200469/what-is-the-difference-between-a-process-and-a- thread) – Michael

+2

In diesen Tagen würde ich 'parallelStream()' wenn möglich, oder einen ExecutorService verwenden, wenn nicht, erstellen rohe Threads ist wahrscheinlich keine gute Idee, es sei denn, Sie wissen wirklich, was Sie tun. –

+0

Ich suche nach Thread-Erstellung innerhalb des neuen Prozesses. –

Antwort

1

Ich bin auf der Suche nach Thread-Erstellung im neuen Prozess.

Einmal gestartet, hat die startende Anwendung nicht die Kontrolle über die Threads innerhalb des neuen Prozesses. Zusätzliche Threads im neuen Prozess werden gestartet, sobald der Prozesscode entscheidet. Nur wenn Sie der Autor des Codes für den anderen Prozess sind, können Sie ändern, wie und wann neue Threads erstellt werden.

0

Der Unterschied zwischen Prozessen und Threads in Bezug auf Java besteht darin, dass Threads innerhalb derselben JVM-Instanz ausgeführt werden, während Prozesse in verschiedenen JVM-Instanzen ausgeführt werden.

Wenn Sie beispielsweise zwei Instanzen derselben Java-Anwendung starten, werden zwei Prozesse ausgeführt, die jeweils in einer eigenen JVM ausgeführt werden. Obwohl sie dieselbe Anwendung sind, laufen sie unabhängig voneinander, es sei denn, die Anwendung enthält Mittel zur Kommunikation zwischen sich selbst.

Thread-Erstellung in einem anderen Prozess wäre die Verantwortung für dessen Java-Code. Wenn Sie Threads in einer JVM unter der Anweisung von Code in einer anderen JVM erstellen möchten, müssen Sie einen prozessübergreifenden Steuerungsmechanismus implementieren (z. B. Socket, Steuerdatei, RMI, JMX usw.).

Ohne zu wissen, warum Sie Threads in einem anderen Prozess erzeugen, kann ich nur davon ausgehen, dass Sie irgendeine Art von Isolation wollen. Wenn es sich um eine Datenisolierung handelt, sollten Sie eine Überarbeitung der Architektur Ihrer Anwendung in Betracht ziehen, um sie an sich zu implementieren und einem der Vorschläge in Peter Lawreys comment zu folgen. Ein guter Ausgangspunkt für ExecutorService ist Java 8 Concurrency Tools: Threads and Executors.