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

© 邵阳 中级黑马   /  2012-7-10 18:46  /  1886 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 邵阳 于 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 个错误

评分

参与人数 1技术分 +1 收起 理由
刘笑 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览

本帖最后由 彭盼 于 2012-7-10 19:01 编辑

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

评分

参与人数 1技术分 +1 收起 理由
刘笑 + 1 赞一个!

查看全部评分

回复 使用道具 举报
class Demo implements Runnable
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马