zoukankan      html  css  js  c++  java
  • 多线程synchronized 8种锁的状态

    /**

    1.标准访问,先打印短信还是邮件?
    ------sendSMS
    ------sendEmail

    2.停4秒在短信方法内,先打印短信还是邮件?
    ------sendSMS
    ------sendEmail


    3.新增普通的hello方法,是先打印短信还是hello?
    ----getHello
    ------sendSMS

    4.现在有两部手机,先打印短信还是邮件?
    ------sendEmail
    ------sendSMS

    5.两个静态同步方法,1部手机,先打印短信还是邮件?
    ------sendSMS
    ------sendEmail

    6.两个静态同步方法,2部手机,先打印短信还是邮件?
    ------sendSMS
    ------sendEmail

    7.1个静态同步方法,1个普通同步方法,1部手机,先打印短信还是邮件?
    ------sendEmail
    ------sendSMS

    8.1个静态同步方法,1个普通同步方法,2部手机,先打印短信还是邮件?
    ------sendEmail
    ------sendSMS

    */

    代码如下:
    class Phone {
        public static synchronized void sendSMS() throws Exception {
            //停留4秒
            TimeUnit.SECONDS.sleep(4);
            System.out.println("------sendSMS");
        }
    
        public  synchronized void sendEmail() throws Exception {
            System.out.println("------sendEmail");
        }
    
        public void getHello() {
            System.out.println("----getHello");
        }
    }
    
    
    public class Lock_8 {
    
        public static void main(String[] args) throws InterruptedException {
            Phone phone1 = new Phone();
            Phone phone2 = new Phone();
    
            new Thread(() -> {
                try {
                    phone1.sendSMS();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            },"AA").start();
    
            Thread.sleep(1);
    
            new Thread(() -> {
                try {
                   //phone1.sendEmail();
                  //  phone1.getHello();
                    phone2.sendEmail();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            },"BB").start();
        }
    }

    总结:

    synchronized实现同步的基础: Java中的每一个对象都可以作为锁,具体表现为以下3种形式:

    1. 对于普通同步方法,锁是当前实例对象。
    2. 对于静态同步方法,锁是当前类的Class对象。
    3. 对于同步方法块,锁是Synchronized括号里配置的对象。
  • 相关阅读:
    使用python写天气预告
    beef配合ettercap批量劫持内网的浏览器
    html布局
    python 使用paramiko模块上传本地文件到ssh
    mysql一些函数的记录
    python与ssh交互
    html笔记4
    html笔记3
    html笔记2
    html笔记1
  • 原文地址:https://www.cnblogs.com/liuyi13535496566/p/15023167.html
Copyright © 2011-2022 走看看