• synchronized的重入


    /**
     * synchronized的重入
     *
     */
    public class SyncDubbo1 {
    
        public synchronized void method1(){
            System.out.println("method1..");
            method2();
        }
        public synchronized void method2(){
            System.out.println("method2..");
            method3();
        }
        public synchronized void method3(){
            System.out.println("method3..");
        }
        
        public static void main(String[] args) {
            final SyncDubbo1 sd = new SyncDubbo1();
            Thread t1 = new Thread(new Runnable() {
                @Override
                public void run() {
                    sd.method1();
                }
            });
            t1.start();
        }
    }
    /**
     * synchronized的重入
     *
     */
    public class SyncDubbo2 {
    
        static class Main {
            public int i = 10;
            public synchronized void operationSup(){
                try {
                    i--;
                    System.out.println("Main print i = " + i);
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
        
        static class Sub extends Main {
            public synchronized void operationSub(){
                try {
                    while(i > 0) {
                        i--;
                        System.out.println("Sub print i = " + i);
                        Thread.sleep(100);        
                        this.operationSup();
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
        
        public static void main(String[] args) {
            
            Thread t1 = new Thread(new Runnable() {
                @Override
                public void run() {
                    Sub sub = new Sub();
                    sub.operationSub();
                }
            });
            
            t1.start();
        }
    }

    上面的两个例子比较简单,可以复制代码查看运行结果即可。

  • 相关阅读:
    设计模式整理_单例设计模式
    设计模式整理_工厂模式
    设计模式整理_装饰者模式
    设计模式整理_观察者模式
    设计模式整理_策略模式
    JavaSE复习_7 异常
    JavaSE复习_6 枚举类
    JavaSE复习_5 Eclipse的常见操作
    pta编程题19 Saving James Bond 2
    ImportError: No module named PIL
  • 原文地址:https://www.cnblogs.com/dongdone/p/5711340.html
Copyright © 2020-2023  润新知