黑马程序员技术交流社区

标题: 死锁问题匿名实现更简单 [打印本页]

作者: 纸牌屋    时间: 2016-7-26 23:34
标题: 死锁问题匿名实现更简单
package com.itheima;

public class DeadThread {

private static String s = "筷子左";
private static String s1 = "筷子右";
public static void main(String[] args) {
  // TODO Auto-generated method stub
  new Thread(new Runnable(){
   public void run(){
    while(true){
     synchronized(s){
      System.out.println("已经拿到筷子左,等待筷子右");
      synchronized(s1){
       System.out.println("已经拿到筷子右,开吃");
      }
     }
    }
   }
  }).start();
  
  new Thread(){
   public void run(){
    while(true){
     synchronized(s1){
      System.out.println("已经拿到筷子右,等待筷子左");
      synchronized(s){
       System.out.println("已经拿到筷子左,开吃");
      }
     }
    }
   }
  }.start();
}
}
死锁算是金典了,面试的时候手写代码可能会用到,死锁问题直白来说就是两个人去饭店吃饭,只有一双筷子,结果一人各拿到了一只,互相都想要对方的筷子这样就导致无法吃饭,对应到java中就会产生程序卡死的情况,以上的死锁案例是用匿名对象完成的,使用了两种方法,第一个线程的用的是实现Runnable接口完成的,第二个线程使用继承Thread类完成的。匿名方式虽然看起来复杂,但习惯之后会发现写起来其实很方便。



作者: qetu001212    时间: 2016-7-26 23:38
腻害,对匿名内部类的理解这么深入!
作者: 胡诗亮66    时间: 2016-7-26 23:46
学习面向对象的时候,匿名这个东西是我的硬伤,来研究研究




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2