A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© daniel031699 中级黑马   /  2016-6-4 08:40  /  931 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package a0524;


class SynLock implements Runnable {
        private boolean flag;
        Object locka=new Object();
        Object lockb=new Object();
        public  SynLock(boolean flag)
        {
                this.flag=flag;
        }
        @Override
        public void run() {
                // TODO Auto-generated method stub
                if(flag)
                {
                        while(true){
                                synchronized (locka) {
                                        System.out.println(Thread.currentThread().getName()+"...if .......locka....");
                                        synchronized (lockb) {
                                                System.out.println(Thread.currentThread().getName()+"...if .......lockb....");
                                        }
                                }
                        }
                }else
                {
                        while(true){
                                synchronized (lockb) {
                                        System.out.println(Thread.currentThread().getName()+"...else .......lockb....");
                                        synchronized (locka) {
                                                System.out.println(Thread.currentThread().getName()+"...else .......locka....");
                                        }
                                }
                        }
                }

        }       
}

public class SynLockDemo1 {

        public static void main(String []args )
          {
                  SynLock l1=new SynLock(true);
                  SynLock l2=new SynLock(false);
                  Thread t1 =new Thread(l1);
                  Thread t2 =new Thread(l2);
                  t1.start();
                  t2.start();
                  
          }       

}


2 个回复

倒序浏览
SynLock l1=new SynLock(true);
SynLock l2=new SynLock(false);
这里创建了2个对象,在每个对象中分别创建了locka和lockb,不同的锁,只是名字相同
回复 使用道具 举报
    Object locka=new Object();
    Object lockb=new Object();
加上:
static final修饰,保证前后锁的唯一性
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马