synchronized

2021-05-06 09:43:42 浏览数 (1)

 package com.tester;

public class Thread3 {     class Inner {         private void m4t1() {             int i = 5;             while (i– > 0) {                 System.out.println(Thread.currentThread().getName()                         ” : Inner.m4t1()=” i);                 try {                     Thread.sleep(500);                 } catch (InterruptedException ie) {                 }             }         }

        private void m4t2() {             int i = 5;             while (i– > 0) {                 System.out.println(Thread.currentThread().getName()                         ” : Inner.m4t2()=” i);                 try {                     Thread.sleep(500);                 } catch (InterruptedException ie) {                 }             }         } //会同步,同一个对象只有一把锁         // private synchronized void m4t2() {         // int i = 5;         // while (i– > 0) {         // System.out.println(Thread.currentThread().getName()         // ” : Inner.m4t2()=” i);         // try {         // Thread.sleep(500);         // } catch (InterruptedException ie) {         // }         // }         // }

    }

    private void m4t1(Inner inner) {         synchronized (inner) { // 使用对象锁             inner.m4t1();         }     }

    private void m4t2(Inner inner) {         inner.m4t2();     }

    // 不会同步,因为锁的对象不同 //    private synchronized void m4t2(Inner inner) { //        inner.m4t2(); //    }

    public static void main(String[] args) {         final Thread3 myt3 = new Thread3();         final Inner inner = myt3.new Inner();         Thread t1 = new Thread(new Runnable() {             public void run() {                 myt3.m4t1(inner);             }         }, “t1”);         Thread t2 = new Thread(new Runnable() {             public void run() {                 myt3.m4t2(inner);             }         }, “t2”);         t1.start();         t2.start();     } }

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/100540.html原文链接:

0 人点赞