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类模板。

  • 相关阅读:
    四则运算题目生成器
    个人博客作业Week1
    M1/M2项目阶段总结
    个人博客作业week7
    个人博客作业—2
    第一周个人博客作业
    关于生成四则运算式
    个人博客作业week7
    第二次博客作业
    关于webservice大数据量传输时的压缩和解压缩
  • 原文地址:https://www.cnblogs.com/jzspace/p/12949025.html
Copyright © 2011-2022 走看看