• synchronized使用


    在一个方法内部使用如下代码:

    public void m5() {
            synchronized (Test1.class) {
                System.out.println("m5");
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }

    等同于如下代码:

    public synchronized static void m5() {
                System.out.println("m5");
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
        }

    以上两种情况是全局所有实例对象共用一个同步锁;

    而如下两组代码则是每个实例对象使用单独的同步锁,如下:

     public void m6() {
            synchronized (this) {
                System.out.println("m5");
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    
     public synchronized  void m6() {
                System.out.println("m5");
                try {
                    Thread.sleep(5000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            
        }
  • 相关阅读:
    PHP学习(一)----变量及字符串
    swith
    重写和重载的区别
    静态对象与非静态对象
    继承
    面向对象
    五个对面向对象的实例
    双色球 36选7
    菱形java代码
    双色球代码
  • 原文地址:https://www.cnblogs.com/zzq-include/p/6820481.html
Copyright © 2020-2023  润新知