- 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();
- }
- }
复制代码 大家好 关于这段代码我有2点疑惑。
第一个问题就是static可以修饰成员变量和成员函数。这句话Object locka=new Object();为什么可以被static修饰呀?
第二个问题就是加上了静态以后就多了一种调用方式,就是可以直接被类名所调用,调用的是方法,而locka和lockb都
是对象的引用,为什么还可以被类名调用呢?难道我学死了!麻烦仁兄们帮小弟解答下疑惑。谢谢了。
|
|