zoukankan      html  css  js  c++  java
  • 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();
        }
    }

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

  • 相关阅读:
    IfcFeatureElementAddition
    IfcOpeningElement
    IfcRelNests
    IfcElementAssemblyType
    IfcProjectionElement
    IfcFeatureElement
    IfcRelDefines
    Win10 Anaconda配置tensorflow
    Anaconda升级
    Anaconda 台式机环境
  • 原文地址:https://www.cnblogs.com/dongdone/p/5711340.html
Copyright © 2011-2022 走看看