死锁

死锁

package 多线程;

import java.util.concurrent.TimeUnit;

//多线程------死锁
//同步本质:一个线程等待另一个线程执行完毕后才执行
// 死锁:几个线程共享有限资源且几个相关的线程彼此之间相互等待着释放对方占有自己的资源,会造成死锁

/**
 * 电脑类需要电脑 鼠标类需要鼠标
 * 电脑鼠标各有一个
 * 二者互相占用资源
 */
class Computer{
    public synchronized void needComputer(Mouse mouse){
        System.out.println("我占有鼠标,需要电脑");
        try {
            TimeUnit.SECONDS.sleep(2);
        }catch (Exception e){
            e.printStackTrace();
        }
        mouse.test();
    }
    public synchronized void test(){
        System.out.println("急用电脑");
    }
}
class Mouse{
    public synchronized void needMouse(Computer computer){
        System.out.println("我占有电脑,需要鼠标");
        try {
            TimeUnit.SECONDS.sleep(2);
        }catch (Exception e){
            e.printStackTrace();
        }
        computer.test();
    }
    public synchronized void test(){
        System.out.println("急用鼠标");
    }
}
public class DieSynchronized2 implements  Runnable{
    public static Computer computer=new Computer();
    public static Mouse mouse=new Mouse();
    public static void main(String  args[]){
            new DieSynchronized2();
    }
    public DieSynchronized2(){
        //二者占用同一个资源
        new Thread(this).start();//新线程
        computer.needComputer(mouse);//主线程
    }
    @Override
    public void run() {
        mouse.needMouse(computer);
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值