Le thread unique est sûr car il n'y a qu'un seul thread, et il n'y a pas de threads multiples qui saisissent la même ressource.
Exemple de code:
classe publique SingleThread {int num = 10; public void add () {while (num <13) {num ++; try {thread.sleep (1000);} Catch (exception e) {System.out.println ("interruption");} System.out.println (num);}} public STATIC VOID MAIN (String [] args) {Thread Thread = Thread. // obtient le thread en cours d'exécution Thread.SetName ("thread unique"); // Thread Rename System.out.println (thread.getName () + "Running"); SingleThread ST = new SingleThread (); St.Add ();}}Sécurité multithread, blocs de code synchronisés synchronisés
synchronisé (objet) {}; // Bloc de code synchronisé
Nom de la méthode de valeur de retour synchronisée () {}; // Méthode synchronisée
classe un {int num = 10; public void add () {synchronisé (this) {// Blocks de code de synchronisation, la méthode de synchronisation peut également réaliser l'effet void synchronisé add () {}; num ++; essayez {thread.sleep (1000); } catch (InterruptedException e) {System.out.println ("Interrupted"); } System.out.println (num); }}} La classe deux implémente Runnable {One One = new One (); @Override public void run () {one.add (); // Appel de la méthode ADD}} classe publique Synch {public static void main (String [] args) {Two Two = new Two (); Thread t1 = nouveau thread (deux); // Créer trois threads de threads enfants t2 = nouveau thread (deux); Thread t3 = nouveau thread (deux); t1.start (); t2.start (); t3.start (); }}Remarque: Observez la différence dans l'exécution des résultats de la suppression des mots clés synchronisés!
Résultats du fonctionnement normal:
11
12
13