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

  • 相关阅读:
    Vim插件:Unite新手指导(译)
    Java并发编程实战3章
    Centos6.*下安装gcc-4.8.2
    iostat详解
    国内速度比较快的NTP Server
    ssh免密登录配置
    解决卸载移动硬盘问题:umount:/usb1/:device is busy
    Centos查看系统安装日期
    主机IP规划__rsync__inotify
    熟悉OSI七层模型
  • 原文地址:https://www.cnblogs.com/jzspace/p/12949025.html
Copyright © 2011-2022 走看看