| 
 
| 大家好  关于这段代码我有2点疑惑。复制代码class Test implements Runnable
{
  private boolean flag;
        Test(boolean flag)
        {
                this.flag=flag;        
        }
        
        public void run()
        {
                if(flag)
                {
                        
                        synchronized(MyLock.locka)
                        {
                                System.ou("if locka");t.println
                                synchronized(MyLock.lockb)
                                {
                                 System.out.println("if lockb");        
                                }        
                        }        
                }
                else
                {
                        
                        synchronized(MyLock.lockb)
                        {
                                System.out.println("else lockb");
                                synchronized(MyLock.locka)
                                {
                                 System.out.println("else locka");
                                }        
                        }                
                }
        }
}
class MyLock
{
        static Object locka=new Object();
        static Object lockb=new Object();        
}
class DeadLockTest
{
        public static void main(String[] args)
        {
                Thread t1=new Thread(new Test(true));
                Thread t2=new Thread(new Test(false));
                t1.start();
                t2.start();
        }
}
第一个问题就是static可以修饰成员变量和成员函数。这句话Object locka=new Object();为什么可以被static修饰呀?
 第二个问题就是加上了静态以后就多了一种调用方式,就是可以直接被类名所调用,调用的是方法,而locka和lockb都
 是对象的引用,为什么还可以被类名调用呢?难道我学死了!麻烦仁兄们帮小弟解答下疑惑。谢谢了。
 
 
 | 
 |