El uso de las cerraduras de código de ejemplo _java_

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 .........." ); 
    } 
}

 

Supongo que te gusta

Origin www.cnblogs.com/chunxiaozhang/p/12666641.html
Recomendado
Clasificación