Sie fragen grundsätzlich nach Thread-Sicherheit in Java (zumindest verstehe ich das aus der Frage). Als eine der früheren Antworten bereits angegeben, ist es eine gute Idee, alle Annahmen, die Sie über Ausführungsreihenfolge haben, wenn mehrere Threads ausgeführt werden.
Jedoch (!) Ist es möglich, Designprinzipien und kritisches Denken zu verwenden, um Ihre Anwendung so zu modellieren, dass keine unerwünschten Nebenwirkungen durch Multithreading auftreten können.
Für den Anfang Sie diesen Artikel auf Designing Object Initilization Der Kern des Artikels lesen ist, dass Sie Ihre Klassen als finite state machines
denken. Wenn Sie nicht wissen, was sie sind: finite state machines
in einer Reihe von Staaten (daher der Name).
Die Idee ist, dass, wenn Sie in Zustand sind (A)
Sie das Verhalten festlegen, dass dieser spezifische Zustand durchführen kann: (A) -> (B), (A) -> (C)
ich von Staat gehen kann (A)
(B)
und (C)
zu erklären, aber nicht zu erklären, (D)
Dies (es sollte vorhanden sein) Mindset ist wichtig zu verstehen, was Ihre Anwendung CAN in jeder gegebenen Situation tun kann.(Fine State Machines Wikipedia)
Sobald Sie dies verstehen, können Sie auf bewegen Der Fix:
Es gibt drei Möglichkeiten, ein Objekt Thread-sicher zu machen:
- synchronisieren kritische Abschnitte
- Make it unveränderlich
- Verwenden Sie einen Thread-sicheren Wrapper
in Java Dokumentation
Jeder Ansatz hat seine eigenen Vorteile/Nachteile, die hier erläutert werden:
Hoffentlich wird Ihnen ein besseres Verständnis gegeben von Die Komplikationen, denen Sie beim Erstellen von Multithread-Anwendungen begegnen können.
Kurze Antwort: Der Haupt-Thread bleibt einsatzbereit und wird, wenn mindestens ein freier Kern vorhanden ist, wahrscheinlich ohne Unterbrechung weiterlaufen. Aber du weißt nie. –
Selbst wenn der Haupt-Thread garantiert die Kontrolle übernahm, könnte er später die Kontrolle verlieren. – usr
@ user704023 Wenn eine der folgenden Antworten Ihnen mehr Einblick geben konnte oder Ihr Problem gelöst wurde, dann überlegen Sie, ob Sie eine als akzeptierte Antwort markieren, damit nützliche Informationen hervorgehoben werden. – MSB