package com.lyon.juc; import java.util.concurrent.TimeUnit; //8锁 就是关于锁的8个问题 //1.标准情况下,两个线程先打印 发短信 打电话? 1/发短信 2/打电话 //2.sendSms方法中延迟1秒,两个线程先打印 发短信 打电话? 1/发短信 2/打电话 public class Test8Lock2 { public static void main(String[] args) { //两个对象 Phone2 phone = new Phone2(); Phone2 phone1 = new Phone2(); new Thread(()->{ phone.sendSms(); },"A").start(); // try { // TimeUnit.SECONDS.sleep(1); // } catch (Exception e) { // e.printStackTrace(); // } new Thread(()->{ phone1.call(); },"B").start(); } } class Phone2{ //synchronized 锁的对象是方法的调用者! //两个方法用的是同一个锁,谁先拿到先执行 //调用sleep并不会释放锁 //所以,call方法是没机会了! public synchronized void sendSms(){ try { TimeUnit.SECONDS.sleep(4); } catch (Exception e) { e.printStackTrace(); } System.out.println("sendSms"); } public synchronized void call(){ System.out.println("call"); } //普通方法 不是同步方法 不受锁的影响 public void hello(){ System.out.println("hello"); } }
多线程8锁之普通方法与同步方法
最新推荐文章于 2024-12-01 23:53:54 发布