写一个java死锁的demo

package com.simon.study;
/**
 * 线程死锁 一个线程要同时拥有两个对象的资源才能进行下一步操作;
 * @author: Simon
 * @date: 2017年7月29日 下午9:48:43
 */
public class DeadLock implements Runnable{
  static Object o1=new Object(),o2=new Object();
  public int flag=1;
 
 
     public void run() {
           // TODO Auto-generated method stub
           System.out.println("flag***********"+flag);
           if(flag==1){
                synchronized (o1) {
                      try {
                           Thread.sleep(500);
                      } catch (Exception e) {
                           // TODO: handle exception
                      }
                      synchronized (o2) {
                           System.out.println("这里线程1获取所有的线程权限");
                      }
                }
                
                }
           if(flag==0){
                synchronized (o2) {
                      try {
                           Thread.sleep(500);
                      } catch (Exception e) {
                           // TODO: handle exception
                      }
                      synchronized (o1) {
                           System.out.println("这里线程2获取所有的线程权限");
                      }
                }
                
           }
           }
     public static void main(String[] args){
           DeadLock deadLock1=new DeadLock();
           DeadLock deadLock2=new DeadLock();
           deadLock1.flag=1;
           deadLock2.flag=0;
           Thread r1=new Thread(deadLock1);
           Thread r2=new Thread(deadLock2);
           r1.start();
           r2.start();
     }
     }
 

 

转载于:https://www.cnblogs.com/SimonHu1993/p/7257667.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值