1
   class ThreadInherit extends Helper implements Runnable 
   {

    @Override
    public void run() {
        // TODO Auto-generated method stub
        try {
            for (int i = 1; i <= 20; i++) {
                System.out.println("Hello World");
                Thread.sleep(500);
                if (i == 10) {
                    Notify();
                    Wait();
                }                       
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

class Thread_Inherit1 extends ThreadInherit 
{
    @Override
    public void run() {
        // TODO Auto-generated method stub
        try {
            Wait();
            for(int i = 1; i<=20; i++)
            {
                System.out.println("Welcome");
                Thread.sleep(550);
            }
            Notify();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block 
            e.printStackTrace();
        }
    } 
    }

    class Helper
    {
    public synchronized void Wait() throws InterruptedException
    {
        wait();
    }
    public synchronized void Notify() throws InterruptedException
    {
        notify();
    }
    }
    public class Inheritance_Class {

    public static void main (String[] args)
    {   
        Thread_Inherit1 u = new Thread_Inherit1();
        Thread_Inherit1 t = new ThreadInherit();
        t.run();
        u.run();

    }

}

所以我有这段代码......我对这条线有疑问

  Thread_Inherit1 t = new ThreadInherit();

它不能转换为 Thread_Inherit1。Eclipse的建议:

1.将强制转换添加到 Thread_Inherit1(我做了,但仍然给我错误) 2.更改为 ThreadInherit。(可能,不是解决方案)

有什么帮助吗?

4

2 回答 2

1

我想你真的想要:

 ThreadInherit t = new Thread_Inherit1();

将子类分配为具有超类型的类型更有意义。另一种方式可能不是你想要的。

此外,要启动线程,您要调用start(),而不是run()直接调用。尝试这个:

Thread t = new Thread(new Thread_Inherit1());
Thread u = new Thread(new ThreadInherit());

t.start();
u.start();
于 2013-06-07T00:07:39.503 回答
1

您的代码有:

class Thread_Inherit1 extends ThreadInherit 

...你的问题是:

Thread_Inherit1 t = new ThreadInherit();

问题是事情是倒退的。ThreadInherit 不是 thread_Inherit1。我认为你打算写的那行是:

ThreadInherit t = new Thread_Inherit1();

希望这能解决你的问题。

于 2013-06-07T00:16:08.767 回答