有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中的多线程线程继承

   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();

无法将其转换为线程1。 Eclipse的建议:

一,。向线程1添加cast(我做了,但仍然给我错误) 2.更改为ThreadInherit。(可能不是解决方案)

有什么帮助吗


共 (1) 个答案

  1. # 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();