Ein einzelner Thread ist sicher, da es nur einen Thread gibt, und es gibt keine mehrere Threads, die dieselbe Ressource erfassen.
Codebeispiel:
public class Singlethread {int num = 10; public void add () {while (num <13) {num ++; try {thread.sleep (1000);} catch (Ausnahme E) {System.out.println ("interrupt");} System.out.println (num);}} public static static void Main (String [] args) {Thread). // den aktuell ausgeführten Thread -Objekt -Thread.SetName ("Single Thread") abrufen; // Thread umbenannt System.out.println (Thread.getName ()+"Running"); SingLethread St = New Singlethread (); St.Add ();}}Multithread -Sicherheit, synchronisierte synchronisierte Codeblöcke
synchronisiert (Objekt) {}; // synchronisierte Codeblocke
synchronisierte Rückgabewertmethode name () {}; // synchronisierte Methode
Klasse eins {int num = 10; public void add () {synchronisierte (this) {// Synchronisation Codeblöcke, Synchronisationsmethode kann auch den Effekt synchronisierten void add () {}; num ++ erreichen; try {thread.sleep (1000); } catch (InterruptedException e) {System.out.println ("Interrupted"); } System.out.println (num); }}} Klasse zwei implements runnable {eins = new One (); @Override public void run () {One.add (); // die Methode hinzufügen}} public class synchn {public static void main (String [] args) {zwei = new Two (); Thread T1 = neuer Thread (zwei); // Erstellen Sie drei untergeordnete Threads Thread t2 = neuer Thread (zwei); Thread T3 = neuer Thread (zwei); t1.start (); t2.Start (); t3.Start (); }}Hinweis: Beobachten Sie den Unterschied in den laufenden Ergebnissen bei der Entfernung synchronisierter Schlüsselwörter!
Normale Betriebsergebnisse:
11
12
13