黑马程序员技术交流社区

标题: 死锁 [打印本页]

作者: 邵阳    时间: 2012-7-10 18:46
标题: 死锁
本帖最后由 邵阳 于 2012-7-10 20:17 编辑

按老师写了个死锁,老是编译失败
/*死锁*/
class Demo
{
        private boolean p;
        Demo(boolean p)
        {
                this.p=p;
        }
        public void  run()
        {
                if (p)
                {
                        synchronized(myClock.x1)
                        {
                                System.out.println("if......  x1");
                                synchronized(myClock.x2)
                                {
                                        System.out.println("if......  x2");
                                }
                        }
                }
                else
                {
                        synchronized(myClock.x2)
                        {
                                System.out.println("else......  x1");
                                synchronized(myClock.x1)
                                {
                                        System.out.println("else......  x2");
                                }
                        }
                }
        }
}
class myClock
{
        static Object x1=new Object();
        static Object x2=new Object();
}
class  Test
{
        public static void main(String[]args)
        {
                Thread d1=new Thread(new Demo (true));
                Thread d2=new Thread(new Demo (false));
                d1.start();
                d2.start();
        }
}
求大神指教
D:\java\zuoye\xiancheng>javac  d.java
d.java:219: 错误: 对于Thread(Demo), 找不到合适的构造器
                Thread d1=new Thread(new Demo (true));
                          ^
    构造器 Thread.Thread(ThreadGroup,Runnable,String,long)不适
      (实际参数列表和形式参数列表长度不同)
    构造器 Thread.Thread(ThreadGroup,Runnable,String)不适用
      (实际参数列表和形式参数列表长度不同)
    构造器 Thread.Thread(Runnable,String)不适用
      (实际参数列表和形式参数列表长度不同)
    构造器 Thread.Thread(ThreadGroup,String)不适用
      (实际参数列表和形式参数列表长度不同)
    构造器 Thread.Thread(String)不适用
      (无法通过方法调用转换将实际参数Demo转换为String)
    构造器 Thread.Thread(ThreadGroup,Runnable)不适用
      (实际参数列表和形式参数列表长度不同)
    构造器 Thread.Thread(Runnable)不适用
      (无法通过方法调用转换将实际参数Demo转换为Runnable)
    构造器 Thread.Thread()不适用
      (实际参数列表和形式参数列表长度不同)
d.java:220: 错误: 对于Thread(Demo), 找不到合适的构造器
                Thread d2=new Thread(new Demo (false));
                          ^
    构造器 Thread.Thread(ThreadGroup,Runnable,String,long)不适
      (实际参数列表和形式参数列表长度不同)
    构造器 Thread.Thread(ThreadGroup,Runnable,String)不适用
      (实际参数列表和形式参数列表长度不同)
    构造器 Thread.Thread(Runnable,String)不适用
      (实际参数列表和形式参数列表长度不同)
    构造器 Thread.Thread(ThreadGroup,String)不适用
      (实际参数列表和形式参数列表长度不同)
    构造器 Thread.Thread(String)不适用
      (无法通过方法调用转换将实际参数Demo转换为String)
    构造器 Thread.Thread(ThreadGroup,Runnable)不适用
      (实际参数列表和形式参数列表长度不同)
    构造器 Thread.Thread(Runnable)不适用
      (无法通过方法调用转换将实际参数Demo转换为Runnable)
    构造器 Thread.Thread()不适用
      (实际参数列表和形式参数列表长度不同)
2 个错误
作者: 彭盼    时间: 2012-7-10 18:57
标题:
本帖最后由 彭盼 于 2012-7-10 19:01 编辑

很简单啊,class Demo后面你没有实现Runable接口啊
建立线程的两种方式一种继承Thread类,复写run(),然后直接
调用类的对象的start()
另一种让目标类实现Runnable接口,再将目标类的实例对象当作
参数传入Thread的构造函数,调用start()开启线程
顺便复习下,呵呵
作者: 李伟    时间: 2012-7-10 19:00
class Demo implements Runnable




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