ejemplos sincronizado: A
1, la clase principal
empaquetar las cerraduras; / ** * @author chunxiaozhang * @date 09/04/2020 10:06 * @desc * / público de clase MainDemo { pública estática vacío main (String [] args) { definitiva peopele p = nueva peopele (); última p2 peopele = nuevo peopele (); // 线程1 nuevo hilo ( nueva Ejecutable () { @ Override pública vacío run () { p2.speak_obj () ;; } },"thread_1" ) .start (); // 线程2 nuevo hilo ( nueva Ejecutable () { @ Override pública vacío run () { p.speak_static_void (); } }, "thread_2" ) .start (); // 线程3 nuevo hilo ( nueva Ejecutable () { @ Override pública vacío run () { p.speak_static_void (); } }, "thread_3" ) .start (); } }
2, la clase de prueba
empaquetar las cerraduras; / ** * @author chunxiaozhang * @date 09/04/2020 11:05 * @desc * / público de clase peopele { privada estática int sta_num = 1 ; privado int num = 1 ; // 无锁部分 pública vacío speak () { System.out.println (Thread.currentThread () .getName () + ":开始.........." ); tratar { Thread.sleep ( 1000 ); System.out.println (Thread.currentThread () .getName ()+ ": Sta_num + 1 =" + (sta_num + 1 )); System.out.println (Thread.currentThread () .getName () + ": num + 1 =" + (num + 1 )); } Catch (InterruptedException e) { e.printStackTrace (); } System.out.println (Thread.currentThread () .getName () + ":结束.........." ); } // 用于对象上 públicos vacíos speak_this () { sincronizado ( este ) { System.out.println (Thread.currentThread () .getName () + ":开始.........." ); tratar { Thread.sleep ( 3000 ); } Catch (InterruptedException e) { e.printStackTrace (); } System.out.println (Thread.currentThread () .getName () + ":结束.........." ); } } // 用于类上 pública vacío speak_class () { sincronizada (peopele. Clase ) { System.out.println (Thread.currentThread () .getName () + ":开始.......... " ); tratar { Thread.sleep ( 3000 ); } Catch (InterruptedException e) { e.printStackTrace (); } System.out.println (Thread.currentThread () .getName () + ":结束.........." ); } } // 用于任意对象 pública vacío speak_obj () { sincronizada ( nueva Object ()) { System.out.println (Thread.currentThread () .getName () + ":开始......... ." ); tratar { Thread.sleep ( 3000 ); } Catch (InterruptedException e) { e.printStackTrace (); } System.out.println (Thread.currentThread () .getName () + ":结束.........." ); } } // 用于方法上 pública sincronizado vacío speak_void () { System.out.println (Thread.currentThread () .getName () + ":开始.........." ); tratar { Thread.sleep ( 3000 ); } Catch (InterruptedException e) { e.printStackTrace (); } System.out.println (Thread.currentThread () .getName ()+ ": Fin .........." ); } // un método estático público del sincronizada estática vacío speak_static_void () { System.out.println (Thread.currentThread () .getName () + " : iniciar .......... " ); el try { la Thread.sleep ( 3000 ); } la captura (InterruptedException E) { e.printStackTrace (); } System.out.println (Thread.currentThread (). getName () + ": fin .........." ); } }