黑马程序员技术交流社区

标题: 求改代码 [打印本页]

作者: pthuakai    时间: 2013-4-29 15:49
标题: 求改代码
本帖最后由 pthuakai 于 2013-5-6 16:00 编辑

代码出错,求高手帮忙
package TestPackege;
class Testdemo3 implements Runnable
{
private boolean flag;
Testdemo3(boolean flag)
{
  this.flag =flag;
}
public void run()
{
  if(flag)
  {
   System.out.println("if locka");
   synchronized(MyLock.locka)
   {
    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();
}
public class DeadLockTest {
/**
  * @param args
  */
public static void main(String[] args) {
  // TODO Auto-generated method stub
  Thread t1=new Thread(new Runnable(true));
  Thread t2=new Thread(new Runnable(false));
  t1.start();
  t2.start();
}
}


作者: 刘胜寒    时间: 2013-4-29 16:15
if(flag)
  {
// 这个地方应该 是whle (true)  Synchrionized(MyLock.locka)
   System.out.println("if locka");
   synchronized(MyLock.locka)
   {
    System.out.println("if lockb");
   }
  }



else
  {// 添加一个while(true)
   synchronized(MyLock.lockb)
   {
    System.out.println("else lockb");
    synchronized(MyLock.locka)
    {
     System.out.println("else locka");
    }
   }
  }

否则按照你的代码走的话 。 if 执行一下 然后 else 执行一次。
然后主线程结束





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