5.实现死锁: 实现死锁的原理是两个进行同时进行时一个进程占用了另一个进程必须的资源而另一个进程却拿着此进程的必须资源,就这样两个进行相互索要资源,造成两个进程相互等待的状态 package com.itheima; public class 实现死锁 { public static void main(String[]args) { DeadLock deadLock1=new DeadLock(true); DeadLock deadLock2=new DeadLock(false); Thread t1=new Thread(deadLock1,"一" ); Thread t2=new Thread(deadLock2,"二" ); t1.start(); t2.start(); } } class DeadLock implements Runnable { static Integer A = 1;//这里需要一个对象 static Integer B = 2; private boolean flag; public DeadLock(){}; public DeadLock(boolean flag){ // TODO Auto-generated constructor stub super(); this.flag = flag; } public void setFlag(boolean flag) { this.flag = flag; } @Override public void run() { // TODO Auto-generated method stub while (true) { if (flag) { synchronized (String.class) { System.out.println("线程:" + Thread.currentThread().getName() + "拿到了A锁"); synchronized (Integer.class) { System.out.println("线程:" + Thread.currentThread().getName()+ "拿到了B锁"); } } } else { synchronized (Integer.class) { System.out.println("线程:" + Thread.currentThread().getName() + "拿到了B锁"); synchronized (String.class) { System.out.println("线程:" + Thread.currentThread().getName()+ "拿到了A锁"); } } } } } }
|