黑马程序员技术交流社区

标题: 线程死锁 [打印本页]

作者: jk7130866    时间: 2015-7-25 12:58
标题: 线程死锁


public class Test {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
               
                Res r=Res.getInstance();
                Out out=new Out(r);
                In in=new In(r);
                new Thread(out,"线程1").start();
                new Thread(in,"线程2").start();
               
                       
        }
       
               
       
               
       

}
class In implements Runnable
{
        Res r=null;
        In(Res r){
                this.r=r;
               
        }
        @Override
        public void run() {
                // TODO Auto-generated method stub
                while (true){
                        r.in();
                }
               
        }
       
}
class Out implements Runnable{

       
        Res r=null;
        Out(Res r){
                this.r=r;
               
        }
        @Override
        public void run() {
                // TODO Auto-generated method stub
                while(true)
                {
                        if(r!=null){
                                r.out();
                        }
                }
               
        }
       
}
class Res//单列类
{  
        private int num=0;
        private static final Res res=new Res();
        private Res(){}
        public static Res getInstance(){
                return res;
        }
        Object a=new Object();
        Object b=new Object();
        public void setNum(int num){
         this.num=num;       
        }
        public int getNum(){
                return num;
        }
        public void out(){//外部同步代码块持有a锁
                synchronized(a){
                        System.out.println("chushu 1......."+Thread.currentThread().getName());
                        synchronized (b){//内部代码快持有b锁
                                System.out.println("chushu 1...111.111..."+Thread.currentThread().getName());
                               
                        }
                       
                }
               
        }
        public void in(){
                synchronized(b){//外部同步代码块持有b锁
                        System.out.println("chushu 2......."+Thread.currentThread().getName());
                        synchronized (a){//内部同步代码块持有a锁
                                System.out.println("chushu 2...2.1212..."+Thread.currentThread().getName());
                               
                        }
                       
                }
               
        }
       
}


作者: 為了夢想    时间: 2015-7-25 13:36
来 看看
作者: jk7130866    时间: 2015-7-25 21:03
自己定自己
作者: gongyanfa123    时间: 2015-7-25 21:31
互相锁,却又互相访问。




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