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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

黑马王金科

初级黑马

  • 黑马币:45

  • 帖子:4

  • 精华:0

© 黑马王金科 初级黑马   /  2012-7-18 21:59  /  1920 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 细水长流 于 2012-7-18 22:01 编辑

毕老师java基础教学视频里有一段演示 死锁的代码,代码如下
这段代码自己检查了好几遍,没有错误,编译也通过了,运行的时候如下提示
Exception in thread "main" java.lang.NoSuchMethodError: Test.<init>(Z)V
        at DeadLockTest.main(DeadLockTest.java:48)
跪求求解答
/*
死锁。
同步中嵌套同步
*/
class Test implements Runnable
{
private boolean flag;
Test(boolean flag)
{
  this.flag = flag;
}
public void run()
{
  if(flag)
  {
   synchronized(MyLock.locka)
   {
    System.out.println("if locka");
    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();
}
}

3 个回复

倒序浏览
在编译的时候找不到DeadLockTest这个类。
文件所在路径不是你编译时的环境
回复 使用道具 举报
main函数的类和文件同名的
编译能通过的,就是运行的时候出现提示
Exception in thread "main" java.lang.NoSuchMethodError: Test.<init>(Z)V
   at DeadLockTest.main(DeadLockTest.java:50)

我把 Thread t1 = new Thread(new Test(true));
   Thread t2 = new Thread(new Test(false));
   t1.start();
   t2.start();这些都注释掉,改成一条输出语句,运行就没问题的,应该是main里的方法有问题,可我查不出啊
回复 使用道具 举报
为什么这段代码我能运行出结果:
if locka
else lockb
你是不是文件名和类名不一致
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马