Was ist der Unterschied zwischen einem Prozess und einem Thread?
Was ist der technische Unterschied zwischen einem Prozess und einem thread?
Bekomme ich das Gefühl, ein Wort wie 'Prozess' wird überstrapaziert und es gibt auch hardware-und software-threads. Wie über light-weight-Prozesse in Sprachen wie Erlang? Gibt es einen definitiven Grund für die Verwendung eines Begriffs über den anderen?
Kommentar zu dem Problem
Verwandte: stackoverflow.com/questions/32294367/...
InformationsquelleAutor der Frage James Fassett | 2008-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beide Prozesse und threads sind unabhängige Sequenzen der Ausführung. Der typische Unterschied ist, dass threads (desselben Prozesses) laufen in einem gemeinsamen Speicherbereich, während Prozesse laufen in getrennten Speicherbereichen.
Ich bin mir nicht sicher, was "hardware" vs "software" - threads, die Sie beziehen können. Threads sind eine Betriebsumgebung Funktion, sondern als eine CPU-Funktion (obwohl die CPU hat in der Regel Vorgänge, die machen threads effizient).
Erlang verwendet den Begriff "Prozess", weil Sie nicht über eine shared-memory Multi-Programmier-Modell. Fordern Sie "threads" würde bedeuten, dass Sie den gemeinsamen Speicher.
InformationsquelleAutor der Antwort Greg Hewgill
Prozess
Jeder Prozess bietet die Ressourcen, die benötigt werden, um ein Programm auszuführen. Ein Prozess hat einen virtuellen Adressraum, der ausführbare code, offenen handles für Systemobjekte, einen Sicherheitskontext, eine eindeutige Prozess-id -, Umwelt-Variablen, Priorität Klasse, minimum und maximum working set-Größe, und mindestens ein thread der Ausführung. Jeder Prozess mit einem einzigen thread gestartet, der oft als der primäre thread, aber erstellen können zusätzliche threads von jedem seiner threads.
Thread
Ein thread ist eine Einheit innerhalb eines Prozesses, der für die Ausführung geplant werden. Alle threads eines Prozesses teilen sich seinen virtuellen Adressraum und system-Ressourcen. Darüber hinaus hat jeder thread verwaltet exception-Handler, eine scheduling-Priorität, thread-lokalen Speicher, eine eindeutige thread-id, und ein Satz von Strukturen, die das system zum speichern der thread-Kontext, bis es geplant ist. Der thread-Kontext enthält der thread einstellen von Maschine registriert, die kernel-stack ein thread environment block, und einem Benutzer-stack in den Adressraum des Prozesses der thread. Threads können auch Ihre eigenen Sicherheitskontext, die verwendet werden kann für die Identität von clients annehmen.
Fand diese auf der MSDN-Website hier:
Über Prozesse und Threads
InformationsquelleAutor der Antwort Scott Langham
Prozess:
Thread:
Habe ich mir die oben genannten Informationen aus dem Knowledge Quest!!! blog.
InformationsquelleAutor der Antwort Kumar
Zunächst ein Blick auf den theoretischen Aspekt. Sie müssen verstehen, was ein Prozess ist konzeptionell zu verstehen, den Unterschied zwischen einem Prozess und einem thread ist, und was zwischen Ihnen geteilt.
Wir haben die folgenden Abschnitt 2.2.2 Die Klassische Thread-Modell in Moderne Betriebssysteme 3e von Tanenbaum:
Er fährt Fort:
Weiter unten stellt er die folgende Tabelle:
Lassen Sie sich mit der hardware-multithreading Problem. Klassisch, eine CPU unterstützen würde, einen einzigen thread der Ausführung, die Erhaltung der thread-Zustand über einen einzigen Programm-Zähler, und eine Reihe von Registern. Aber was passiert, wenn es ein cache miss? Es dauert eine lange Zeit zum abrufen von Daten aus dem Hauptspeicher, und während das passiert, die CPU ist nur da sitzen im Leerlauf. So hatte jemand die Idee haben Sie grundsätzlich zwei Gruppen von thread-Zustand ( PC + Register), so dass ein anderer thread ( evtl. im gleichen Prozess, vielleicht in einem anderen Prozess ) können die Arbeit zu erledigen, während der andere thread wartet auf Hauptspeicher. Es gibt mehrere Namen und Implementierungen dieses Konzeptes, wie HyperThreading und Gleichzeitige Multithreading ( SMT ).
Nun schauen wir uns die software-Seite. Es gibt grundsätzlich drei Möglichkeiten, wie threads implementiert werden können, die auf der software-Seite.
Alles, was Sie brauchen, zu implementieren threads ist die Möglichkeit zum speichern des CPU-Zustand und halten mehrere Stapel, die in vielen Fällen geschieht im user-space. Der Vorteil von user-space-threads ist super schnelle thread-switching, da Sie nicht haben, um Falle, in die der kernel und die Fähigkeit zu planen, Ihre threads die Art und Weise, die Sie mögen. Der größte Nachteil ist die Unfähigkeit, das zu tun-blocking I/O ( das würde blockieren den gesamten Prozess und alle seine user threads ), das ist einer der großen Gründe, warum wir die Verwendung von threads in den ersten Platz. Blocking I/O mit threads, vereinfacht Programm-design in vielen Fällen.
Kernel-threads haben den Vorteil, in der Lage zu nutzen, die Blockierung I/O, zusätzlich zu verlassen, die alle scheduling-Probleme des OS. Aber jeder thread wechseln erfordert überfüllung in den kernel, was potentiell relativ langsam. Allerdings, wenn Sie wechseln von threads, weil der blockiert I/O-das ist nicht wirklich ein Problem, da die I/O-operation wohl gefangen, die Sie in den kernel sowieso schon.
Ein weiterer Ansatz ist die beiden zu verbinden, mit mehreren kernel-threads, die jeweils mehrere Benutzer-threads.
Also zurück zu deiner Frage der Terminologie, die Sie sehen können, dass ein Prozess und ein thread der Ausführung sind zwei verschiedene Konzepte und die Auswahl der richtigen Begriff zu verwenden, hängt davon ab, was du redest. Bezüglich der Bezeichnung "light weight process", die ich persönlich nicht sehen, den Punkt in ihm, da es sich nicht wirklich vermitteln, was vor sich geht, wie auch der Begriff "thread of execution".
InformationsquelleAutor der Antwort Robert S. Barnes
Zu erklären, mit mehr Respekt zu concurrent programming
Einem Prozess hat eine eigenständige execution environment. Ein Prozess in der Regel hat ein eigenes komplett-set basic run-time-Ressourcen; insbesondere, jeder Prozess hat seinen eigenen Speicherbereich.
Threads vorhanden sind, in ein Prozess — jeder Prozess hat mindestens einen. Threads teilen sich die Prozess-Ressourcen, einschließlich Speicher und öffnen von Dateien. Dies sorgt für eine effiziente, aber potentiell problematisch, Kommunikation.
Halten Durchschnittliche person im Verstand,
Auf Ihrem computer, öffnen Sie Microsoft Word und web-browser. Wir nennen diese zwei Prozesse.
In Microsoft word, geben Sie einige Sache, und es wird automatisch gespeichert. Nun, würden Sie beobachtet haben, Bearbeiten und speichern geschieht parallel - Bearbeitung in einem thread und spart auf der anderen thread.
InformationsquelleAutor der Antwort challenger
Gestohlen hier.
InformationsquelleAutor der Antwort Node
Ein Prozess ist eine Sammlung von code, Speicher, Daten und andere Ressourcen. Ein thread ist eine Sequenz von code, der ausgeführt wird im Rahmen des Prozesses. Sie können (in der Regel) mehrere threads gleichzeitig im gleichen Prozess.
InformationsquelleAutor der Antwort Gerald
InformationsquelleAutor der Antwort karthikeyan_somu
Ein Prozess ist eine ausführende Instanz einer Anwendung. Was bedeutet das? Nun, zum Beispiel, wenn Sie Doppel-klicken Sie auf das Symbol für Microsoft Word, starten Sie einen Prozess, der läuft Word. Ein thread ist ein Pfad der Ausführung innerhalb eines Prozesses. Auch kann ein Prozess mit mehreren threads. Wenn Sie Word starten, wird das Betriebssystem erstellt einen Prozess und beginnt mit der Ausführung der primäre thread des Prozesses.
Es ist wichtig zu beachten, dass ein thread kann alles tun, ein Prozess tun können. Aber da ein Prozess kann aus mehreren threads, ein thread könnte als ein 'leichtes' Prozess. Somit wird der wesentliche Unterschied zwischen einem thread und einem Prozess ist die Arbeit, die jeweils verwendet wird, zu erreichen. Threads werden für kleine Aufgaben, wobei Prozesse verwendet werden, für mehr "schwergewichtige" Aufgaben – im wesentlichen die Ausführung von Anwendungen.
Ein weiterer Unterschied zwischen einem thread und einem Prozess ist, dass die threads innerhalb des selben Prozesses teilen sich den gleichen Adressraum, in der Erwägung, dass verschiedene Prozesse nicht. Dies ermöglicht threads zu Lesen und schreibend auf die gleichen Datenstrukturen und Variablen, und erleichtert auch die Kommunikation zwischen threads. Die Kommunikation zwischen Prozessen – auch bekannt als IPC oder inter-Prozess-Kommunikation ist Recht schwierig und ressourcenintensiv sein.
InformationsquelleAutor der Antwort mumair
Prozess:
Beispiel:
Sagen, dass alle browser (mozilla, Chrome, IE). An dieser Stelle neuen Prozess zu starten, um Sie auszuführen.
Threads:
Beispiel:
Öffnen von mehreren tabs im browser.
InformationsquelleAutor der Antwort
Real world-Beispiel für die Prozess-und Thread -
Dies wird Ihnen die grundlegende Idee, um die thread-und Prozess -
Ich habe mir die oben genannten Infos von Scott Langham Antwort - Dank
InformationsquelleAutor der Antwort Ratheesh
Beide Prozesse und threads sind unabhängige Sequenzen der Ausführung. Der typische Unterschied ist, dass threads (desselben Prozesses) laufen in einem gemeinsamen Speicherbereich, während Prozesse laufen in getrennten Speicherbereichen.
Prozess
Ist ein Programm in Ausführung. es hat text-Abschnitt ich.e den Programm-code, die aktuelle Aktivität, repräsentiert durch den Wert des program counter & Inhalte von Prozessoren-register. Es umfasst auch den Prozess-stack enthält temporäre Daten(z.B. Funktion, Parameter, return angesprochen und lokale Variablen), und ein Daten-Abschnitt enthält Globale Variablen. Ein Prozess kann auch einen Haufen, das ist Speicher, der dynamisch zugewiesen werden beim Prozess der Laufzeit.
Thread
Ein thread ist die grundlegende Einheit der CPU-Auslastung; es besteht aus einer thread-ID, ein Programm, Zähler, register setzen und ein stack. es mit anderen threads geteilt, die zu den gleichen Prozess seine code-Abschnitt, Abschnitt Daten und andere Betriebssystem-Ressourcen wie geöffnete Dateien und Signale.
-- Entnommen Betriebssystem von Galvin
InformationsquelleAutor der Antwort Saurabh Juneja
Versuch einer Antwort auf diese Frage in Bezug auf Java-Welt.
Einem Prozess der Ausführung eines Programms, aber ein thread ist die Ausführung einer einzelnen Sequenz innerhalb des Prozesses. Kann ein Prozess mit mehreren threads. Ein thread wird manchmal als leichte Prozess.
Beispiel:
Beispiel 1:
Eine JVM läuft in einem einzigen Prozess und threads in einer JVM teilen sich den heap gehören zu diesem Prozess. Das ist, warum mehrere threads können das gleiche Objekt. Threads teilen sich den heap und haben Ihre eigenen Stapelspeicher. Dies ist, wie ein thread durch den Aufruf von Methode und Ihre lokalen Variablen gehalten werden, thread-sicher aus anderen threads. Aber der Haufen ist nicht thread-sicher und synchronisiert werden müssen für die thread-Sicherheit.
Beispiel 2:
Ein Programm könnte nicht in der Lage sein, um Bilder zu zeichnen, von Lesen von Tastatureingaben. Das Programm muss seine volle Aufmerksamkeit auf die Tastatur-Eingabe und ohne die Fähigkeit, mehr als ein Ereignis in einer Zeit, zu Schwierigkeiten führen. Die ideale Lösung für dieses problem ist die nahtlose Ausführung von zwei oder mehr Abschnitten eines Programms zur gleichen Zeit. Threads ermöglicht es uns, dies zu tun. Hier Zeichnen Bild ist ein Prozess und Lesen ein Tastenanschlag ein sub-Prozess (thread).
InformationsquelleAutor der Antwort Rupesh
Unterschied zwischen Thread und Prozess?
Ein Prozess ist eine ausführende Instanz einer Anwendung und Ein thread ist ein Pfad der Ausführung innerhalb eines Prozesses. Auch kann ein Prozess mit mehreren threads.Es ist wichtig zu beachten, dass ein thread kann alles tun, ein Prozess tun können. Aber da ein Prozess kann aus mehreren threads, ein thread könnte als ein 'leichtes' Prozess. Somit wird der wesentliche Unterschied zwischen einem thread und einem Prozess ist die Arbeit, die jeweils verwendet wird, zu erreichen. Threads werden für kleine Aufgaben, wobei Prozesse verwendet werden, für mehr "schwergewichtige" Aufgaben – im wesentlichen die Ausführung von Anwendungen.
Ein weiterer Unterschied zwischen einem thread und einem Prozess ist, dass die threads innerhalb des selben Prozesses teilen sich den gleichen Adressraum, in der Erwägung, dass verschiedene Prozesse nicht. Dies ermöglicht threads zu Lesen und schreibend auf die gleichen Datenstrukturen und Variablen, und erleichtert auch die Kommunikation zwischen threads. Die Kommunikation zwischen Prozessen – auch bekannt als IPC oder inter-Prozess-Kommunikation ist Recht schwierig und ressourcenintensiv sein.
Threads sind leichter zu erzeugen als Prozesse, da Sie
don ' T benötigen einen separaten Adressraum.
Multithreading erfordert eine sorgfältige Planung, da threads
freigeben von Daten strucures und sollte nur geändert werden, indem ein thread
in einer Zeit,. Im Gegensatz zu threads, Prozesse, teilen aber nicht das gleiche
Adressraum.
Threads gelten als sehr leicht, da Sie weit
weniger Ressourcen als Prozesse.
Prozesse voneinander unabhängig sind. Threads, da Sie
im gleichen Adressraum sind voneinander abhängig, also Vorsicht
muss so getroffen werden, dass die verschiedenen Fäden nicht Schritt auf einander zu.
Das ist wirklich eine andere Art der Angabe von #2 oben.
Ein Prozess kann aus mehreren threads.
InformationsquelleAutor der Antwort Carlos
Beide threads und Prozesse sind Atomare Einheiten von OS-Ressourcen-Zuweisung (d.h. es gibt eine Parallelität Modell, das beschreibt, wie die CPU-Zeit wird geteilt zwischen Ihnen, das Modell zu besitzen, andere OS-Ressourcen). Es ist ein Unterschied:
Greg Hewgill oben wurde korrekt über den Erlang Bedeutung des Wortes "Prozess", und hier es gibt eine Diskussion darüber, warum Erlang tun könnten Prozesse leicht.
InformationsquelleAutor der Antwort Sergey Mikhanov
InformationsquelleAutor der Antwort dinesh sharma
Aus der Sicht eines Interviewers, es gibt im Grunde nur die 3 wichtigsten Dinge, die ich hören will, außer dem offensichtlichen wie kann ein Prozess mehrere threads:
Wenn du mehr willst, Scott Langham Antwort so ziemlich alles abdeckt was.
Alle diese sind aus der Perspektive eines Betriebssystems. Verschiedenen Sprachen implementieren können verschiedene Konzepte, wie Aufgaben -, Licht-wigh-threads und so weiter, aber Sie sind nur Möglichkeiten, die Verwendung von threads (von Fasern auf Windows).
Es gibt keine hardware-und software-threads. Es gibt hardware-und software - Ausnahmen und unterbricht, oder user-Modus und kernel - threads.
InformationsquelleAutor der Antwort AndreiM
InformationsquelleAutor der Antwort Sushil kumar
Folgende ist, was ich bekam, von einem der Artikel Das Code-Projekt. Ich denke, das erklärt alles, was benötigt wird, deutlich.
InformationsquelleAutor der Antwort Carthi
Prozess: Programm in Ausführung ist bekannt als Prozess
Thread: Thread ist eine Funktion, die ausgeführt wird, mit dem anderen Teil des Programms basiert auf dem Konzept des "miteinander"so-thread ist ein Teil des Prozesses..
InformationsquelleAutor der Antwort saidesh kilaru
Kommen aus der embedded-Welt, ich möchte hinzufügen, dass das Konzept von Prozessen gibt es nur in der "großen" Prozessoren (desktop-CPUs, ARM Cortex A-9), die MMU (memory management unit) und Betriebssysteme , die Unterstützung mit MMUs (wie Linux). Mit kleinen/alten-Prozessoren und-mikrocontroller und kleine RTOS-Betriebssystem (real time operating system), wie freeRTOS, es gibt keine MMU-Unterstützung und somit auch keine Prozesse, sondern nur threads.
Threads können den Zugriff auf jeden anderen Speicher, und Sie sind geplant von OS in eine überlappende Art und Weise, so erscheinen Sie parallel laufen (oder mit multi-core haben Sie wirklich parallel laufen).
Prozesse, auf der anderen Seite Leben in Ihre private sandbox des virtuellen Speichers zur Verfügung gestellt, und bewacht von MMU. Dies ist praktisch, denn es ermöglicht:
nicht erreichbar.
Die eigentliche Arbeit innerhalb des Prozesses wird betreut von einem oder mehreren threads.
InformationsquelleAutor der Antwort Divergence
Beim erstellen eines Algorithmus in Python (interpretierte Sprache) , integriert multi-threading-ich war überrascht zu sehen, dass die execution time wurde es nicht besser, wenn im Vergleich zu den sequentiellen Algorithmus, den ich zuvor gebaut. In einer Bemühung zu verstehen, der Grund für dieses Ergebnis habe ich einige Bücher zu Lesen, und glaube, was ich gelernt habe, bietet einen interessanten Kontext, aus dem, um besser zu verstehen, die Unterschiede zwischen multi-threading und multi-Prozesse.
Multi-core-Systeme ausüben kann mehrere Ausführungsthreads, und so Python sollte Unterstützung für multi-threading. Aber Python ist nicht eine kompilierte Sprache, und stattdessen ist eine interpretierte Sprache1. Dies bedeutet, dass das Programm interpretiert werden muss, um zu laufen, und der Dolmetscher nicht auf das Programm aufmerksam, bevor Sie mit der Ausführung beginnt. Was es tut, aber weiß, sind die Regeln von Python und es dann dynamisch an diese Regeln anwendet. Optimierungen in Python muss dann grundsätzlich Optimierungen der interpreter selbst, und nicht der code, der ausgeführt werden soll. Dies steht im Gegensatz zu kompilierten Sprachen wie C++, und hat Folgen für multi-threading in Python. Insbesondere Python verwendet die Globale Interpreter-Sperre zum verwalten von multi-threading.
Auf der anderen Seite eine kompilierte Sprache ist, gut zusammengestellt. Das Programm verarbeitet wird "ganz", wo es zuerst interpretiert wird, entsprechend seiner syntaktischen Definitionen, dann zugeordnet, da Sie sprachneutral intermediate representation, und schließlich verknüpft in einen ausführbaren code. In diesem Prozess kann der code hoch optimiert, weil es alle verfügbaren zu der Zeit der Zusammenstellung. Die verschiedenen Programm-Interaktionen und Beziehungen definiert sind, die zum Zeitpunkt der ausführbaren Datei erstellen und fundierte Entscheidungen über die Optimierung gemacht werden können.
In modernen Umgebungen Python-interpreter müssen es ermöglichen, multi-threading, und diese müssen sicher und effizient. Dies ist, wo der Unterschied zwischen einer interpretierten Sprache gegenüber einer kompilierten Sprache ins Bild. Der Dolmetscher darf nicht zu stören intern freigegebenen Daten aus verschiedenen threads, während zur gleichen Zeit, die Optimierung der Nutzung der Prozessoren für Berechnungen.
Wie schon erwähnt in den vorherigen posts sowohl ein Prozess und ein thread sind unabhängige sequentielle Ausführungen, der Hauptunterschied ist, dass der Speicher wird gemeinsam von mehreren threads eines Prozesses, während die Vorgänge isolieren Ihre Speicherplätze.
In Python-Daten sind geschützt, von den gleichzeitigen Zugriff von verschiedenen threads durch den Global Interpreter Lock. Es erfordert, dass in jedem Python-Programm nur ein thread ausgeführt werden kann jederzeit. Auf der anderen Seite ist es möglich, die Ausführung mehrerer Prozesse, da der Speicher für jeden Prozess ist isoliert von jedem anderen Prozess, und Prozesse laufen auf mehreren Kernen.
1 Donald Knuth hat eine gute Erklärung dafür, interpretive Routine in Der Kunst der Computer-Programmierung: Grundlegende Algorithmen.
InformationsquelleAutor der Antwort Aaron
Versuchen, Sie zu beantworten von Linux-Kernel-OS-Ansicht
Einem Programm wird ein Prozess beim Start in den Speicher. Ein Prozess hat seinen eigenen Adressraum Bedeutung, die verschiedene Segmente im Speicher, wie .text segement für die Speicherung von kompilierten code .bss für die Speicherung von nicht initialisierten statischen oder globalen Variablen, etc. Jeder Prozess hat seine eigenen program counter und Benutzer-spcae stack. Innen-kernel, jeder Prozess seinen eigenen kernel-stack (die ist getrennt von user-space-stack für security-Themen), und eine Struktur mit dem Namen
task_struct
welche in der Regel abstrahiert, wie die Prozess-control-block, der die Speicherung der Informationen über den Prozess, wie z.B. Priorität, Status,(und eine ganze Menge anderer chunk). Ein Prozess kann mehrere Ausführungsthreads.Kommenden threads befinden Sie sich innerhalb eines Prozesses und teilen sich den Adressraum des übergeordneten Prozesses zusammen mit anderen Ressourcen, die übergeben werden können, während der thread-Erstellung wie Dateisystem-Ressourcen zu teilen anstehenden Signale, Austausch von Daten(Variablen und Anweisungen), damit threads, die leicht und somit schneller Kontextwechsel. Innen-kernel, jeder thread hat seinen eigenen kernel-stack zusammen mit der
task_struct
Struktur, die definiert den thread. Daher kernel Ansichten threads des gleichen Prozesses, wie unterschiedliche Personen und sind terminlich in sich selbst. Threads im gleichen Prozess eine gemeinsame id genannte thread-Gruppen-id(tgid
), auch Sie haben eine eindeutige id, genannt die Prozess-id (pid
).InformationsquelleAutor der Antwort R.K. Tayal
Ein Prozess ist eine ausführende Instanz einer Anwendung.
Was bedeutet das? Nun, zum Beispiel, wenn Sie Doppel-klicken Sie auf das Symbol für Microsoft Word, starten Sie einen Prozess, der läuft Word.
Ein thread ist ein Pfad der Ausführung innerhalb eines Prozesses. Auch kann ein Prozess mit mehreren threads.
Wenn Sie Word starten, wird das Betriebssystem erstellt einen Prozess und beginnt mit der Ausführung der primäre thread des Prozesses.
InformationsquelleAutor der Antwort Masud Sarker
Threads innerhalb des selben Prozesses teilen sich den Speicher, aber jeder thread hat seinen eigenen stack und Register, und threads store thread-spezifischen Daten in den heap. Threads nie unabhängig voneinander ausgeführt, so dass die inter-thread-Kommunikation ist viel schneller, wenn im Vergleich zur inter-Prozess-Kommunikation.
Prozesse niemals den gleichen Speicher freigeben. Wenn ein child-Prozess erstellt, dupliziert es den Speicherort des übergeordneten Prozesses. Prozess-Kommunikation erfolgt über die pipe, shared memory und message-parsing. Kontextwechsel zwischen threads ist sehr langsam.
InformationsquelleAutor der Antwort S.Adikaram
Sind Sie fast so gleich... Aber der entscheidende Unterschied ist ein Faden ist leicht und ein Prozess ist schwer-Gewicht in Bezug auf die Kontext-Umschaltung, Arbeit, Last und so weiter.
InformationsquelleAutor der Antwort Nasir Ul Islam Butt
Die besten kurz-ish-definition, die ich bisher gesehen habe, stammt von Michael Kerrisk 's' The Linux Programming Interface':
InformationsquelleAutor der Antwort Zach Valenta
http://lkml.iu.edu/hypermail/linux/kernel/9608/0191.html
InformationsquelleAutor der Antwort 陳 力
Beispiel 1: Eine JVM läuft in einem einzigen Prozess und threads in einer JVM teilen sich den heap gehören zu diesem Prozess. Das ist, warum mehrere threads können das gleiche Objekt. Threads teilen sich den heap und haben Ihre eigenen Stapelspeicher. Dies ist, wie ein thread durch den Aufruf von Methode und Ihre lokalen Variablen gehalten werden, thread-sicher aus anderen threads. Aber der Haufen ist nicht thread-sicher und synchronisiert werden müssen für die thread-Sicherheit.
InformationsquelleAutor der Antwort user3633458
Betrachten einen Prozess wie eine Einheit von Eigentums-oder welche Ressourcen sind nötig, die durch eine Aufgabe. Ein Prozess kann die Ressourcen wie Speicherplatz, spezifische input/output, bestimmte Dateien, und die Priorität usw.
Ein thread ist eine ausführbare Einheit, die der Durchführung oder in einfachen Worten, den Fortschritt durch eine Abfolge von Anweisungen, die
InformationsquelleAutor der Antwort Anonymous