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

  • 相关阅读:
    字典常用操作复习
    列表常用方法复习
    爬虫流程复习
    协程解决素数
    yield 复习
    多线程复习2
    多线程复习1
    异常 巩固3
    logging日志基础示例
    2019最新百度网盘不限速下载教程
  • 原文地址:https://www.cnblogs.com/jzspace/p/12949025.html
Copyright © 2011-2022 走看看