2017-01-31 11 views
0

Ich las Artikel über Prozesse vs Threads, aber ich bin immer noch nicht klar auf den Unterschied.Prozess vs Thread mit Beispiel

Angenommen, ein Prozess verwendet die CPU/den Prozessor und führt eine große Berechnung durch, die 10 Minuten dauert. Wie läuft ein anderer Prozess gleichzeitig parallel ab? In einem einzigen Kern gegen einen Dual-Core-Prozessor?

Das gleiche für Threads, wie wird ein anderer Thread parallel laufen, wenn die CPU/Prozessor mit einem anderen Thread beschäftigt ist?

Wie unterscheidet sich das Kontextwechsel für Threads und für Prozesse? Ich meine, beide Prozesse und Threads verwenden den gleichen RAM-Speicher, also was ist der Unterschied?

+0

Warum Java in Tags? – Zefick

+0

Ich bin Java-Entwickler! Anfänger durch! –

Antwort

1

Von meiner vagen Erinnerung an Betriebssysteme kann ich Ihnen ein wenig Hilfe anbieten. Zuerst müssen Sie den Unterschied zwischen gleichzeitig und gleichzeitig kennen. Sie sind nicht dasselbe; Simultan bedeutet, dass beide Dinge gleichzeitig auftreten und gleichzeitig bedeutet, dass sie gleichzeitig laufen, aber in Wirklichkeit schalten sie so schnell um, dass Sie nicht erkennen können.

Prozesse und Threads können als ähnlich angesehen werden, aber ein großer Unterschied ist, dass ein Prozess viel größer als ein Thread ist. Aus diesem Grund ist es nicht gut, zwischen Prozessen umzuschalten. Es gibt zu viele Informationen in einem Prozess, die jedes Mal gespeichert und neu geladen werden müssen, wenn die CPU entscheidet, die Prozesse zu wechseln.

Ein Thread auf der anderen Seite ist kleiner und so ist es besser zum Umschalten. Ein Prozess kann mehrere Threads haben, die gleichzeitig ausgeführt werden, also nicht zur gleichen Zeit, sondern zusammen laufen und zwischen ihnen wechseln. Die Kontextumschaltung ist hier besser, da ein Thread nicht so viele Informationen zum Speichern/Neuladen hat.

Wenn Sie nur einen einzigen Kern haben, können Sie nur die gleichzeitige Ausführung durchführen, zum größten Teil. Sobald Sie mehrere Kerne haben, können Sie Threads auf beiden Kernen ausführen lassen und somit gleichzeitig ausführen. Es ist Aufgabe des Betriebssystems zu planen, wann Threads ausgeführt werden, wann Prozesse ausgeführt werden, wann gewechselt wird, wie sie gewechselt werden usw.Das Betriebssystem gibt Ihnen die Illusion, dass Arbeit gleichzeitig ausgeführt wird, wenn dies nicht immer der Fall ist.

Wenn Sie mehr Verwirrung haben, zögern Sie nicht, zu kommentieren.

+0

Großartig! Also nehme ich an, dass Java-App in Tomcat-Server auf Dual-Core-Prozessor ausgeführt wird, so dass jede Anfrage an die Anwendung ein einzelner Thread ist, so wie oben nur zwei Threads gleichzeitig ausgeführt werden, ich meine nur zwei Anfragen gleichzeitig bedient? –

+0

Ja, nur zwei "Anfragen" können gleichzeitig bedient werden, wenn Sie einen Dual-Core haben. Obwohl ich Tomcat Server nicht kenne, kann ich nicht hundertprozentig sicher sein, ich bin nur ein armer Student. Wenn es mit dem Web zusammenhängt, könnte es einen anderen Mechanismus geben. – Developer

0

Ein Prozess ist eine Sache, die sehr auf das Betriebssystem (OS) bezogen ist. Der Thread ist im einfachsten Sinne ein ausführendes Programm. Ein oder mehrere Threads werden im Kontext des Prozesses ausgeführt. Die Java Virtual Machine (JVM) ist ein Prozess in Ihrem Betriebssystem.

Und in der JVM können mehrere Threads gleichzeitig ausgeführt werden.

Der Prozessor ist eine Ressource Ihrer Maschine, wie der Speicher. Ihr Betriebssystem lässt Ihren Prozess die verfügbaren Ressourcen in unseren einfachen Fallprozessoren und Speicher teilen.

Wenn Sie in Java entwickeln, sind alle Prozessoren in Ihrer Maschine verfügbare Ressourcen.

Wenn Sie Ihre Lösung entwickeln, können Sie sogar mehrere Java-Prozesse (d. H. Mehrere JVM) mit jeweils einem oder mehreren Threads ausführen. Aber das hängt hauptsächlich von deinem Problem ab.

Der eigentliche Unterschied zwischen einem Prozess und einem Thread ist, dass beide ein ausführendes Programm haben, aber Threads den gleichen Speicher teilen. Dadurch können Ihre Threads theoretisch mit den gleichen Daten arbeiten, aber Sie müssen die Komplexität von Parallelität und Synchronisation bezahlen.

0

Jede CPU führt nur jeweils einen Thread in einem Prozess aus. Das Betriebssystem kann jedoch einen Thread stoppen und speichern und einen anderen schnell laden und ausführen (so wenig wie 0,0001 Sekunden). Dies gibt die Illusion, dass viele Threads gleichzeitig ausgeführt werden, obwohl nur einer ausgeführt wird.