本帖最后由 ☆枫の云 于 2014-5-14 16:15 编辑
请大神看下下面的代码,我没有按照毕老师讲的新建了锁类然后调用
- class MyLock
- {
- static Object locka = new Object();
- static Object lockb = new Object();
- }
复制代码
就直接在Test中建了两个object的对象充当锁,但是就是锁不住,为什么?求大神解释。
- class Test implements Runnable{
- private boolean flag;
- Object locka = new Object();//建立锁locka
- Object lockb = new Object();//建立锁lockb
- Test(boolean flag){
- this.flag = flag;
- }
-
- //除了锁用的和毕老师的不一样,其他都一样,为什么我的死锁就是无法触发。
- public void run(){
- 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()+"if lockb");
- synchronized(locka){
- System.out.println(Thread.currentThread().getName()+"if locka");
- }
- }
- }
- }
- }
- }
- 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();
- }
- }
复制代码 |