zoukankan      html  css  js  c++  java
  • 八锁(锁的八个问题)

    public class Lock8 {
    public static void main(String[] args) {
    Phone p = new Phone();
    new Thread(()->{ p.sendMsg();},"a").start();
    TimeUnit.SECONDS.sleep(1);
    new Thread(()->{ p.call(); },"b").start();
    }
    }
    class Phone{
    public synchronized void sendMsg(){
    TimeUnit.SECONDS.sleep(4);
    System.out.println("发短信");
    }
    public synchronized void call(){
    System.out.println("打电话");
    }
    }

    ---大概的代码块,执行发短信方法前要先睡了4秒,执行第二个线程前先睡了1秒。---
    ---以下笔记都是在上面有延迟的情况下执行---

    1、Synchronized方法 锁的是对象,谁调用这个方法,它锁的就是谁。锁的是方法的调用者。两个方法用的同一个锁,谁先拿到谁执行。

    2、有锁和无锁同时执行时,无锁先执行。因为它没有锁,不是同步方法,不受锁的影响。

    3、静态的同步方法锁的是Class类模板。

    4、锁的不是同一个,那么后面的线程不需要等待前面线程执行完。

    5、对象调用这个有锁的方法,那么锁的就是对象 就是this。对象调用static锁的方法,那么锁的就是Class类模板。

  • 相关阅读:
    int a=5,则 ++(a++)的值是?
    C中文件操作说明
    最大子序列和 o(n)
    括号匹配
    DOM、SAX、JDOM、DOM4J四种XML解析方法PK
    java中的trim()
    SAX解析XML
    ConcurrentHashMap完全解析(jdk6/7,8)
    为什么推荐Zookeeper作注册中心
    分布式锁的三种实现方式
  • 原文地址:https://www.cnblogs.com/jzspace/p/12949025.html
Copyright © 2011-2022 走看看