Thread里面用内部类的写法 外部类还需要继承Thread或实现runnable了吗? 5C

Thread里面用内部类的写法 里面已经重写了run方法 外部类还需要继承Thread或实现runnable了吗?是不是不用继承接口或实现类了?直接可以实现线程了吧?

图片说明

12个回答

如果你的内部类直接作为参数传给线程的话,外部类不需要再实现接口了。

main 方法就是主线程,在主线程里可以通过new Thread(Runnable r).start()直接启动线程运行

qq_27836205
Jordan裔 那如果不是main方法里面呢?其他普通方法里面的这种写法 外部类还要继承thread或实现runnable吗
接近 2 年之前 回复

不管怎样,你用Thread或者Runnable都必须实现run方法,用类继承Thread或者实现Runnable可以,你的这种写法当然也可以,匿名内部类继承了Thread,实现了Runnable
道理一样啊

继承thread或者实现runnable只是为了方便直接传入this,this就是代表实现的那个runnable,比如多个runnable都是类似的,那么直接实现runnable,然后传入this就可以了,不需要每个都new runnable

跟你外面的类没什么关系,不管是你在Thread中内部实现run还是用Runnable实现run,他们就是两种定制化线程的方式,你把这部分放到另一个类,也能启动线程,你外部类不需要有什么处理
主要是看你new Thread的时候,有没有对应的实现

再说线程之前必须指出,你图片里面说这个类没有任何和继承是错误的,它隐性继承了Object这个类!
而线程来说,不需要你去考虑具体实现什么的,你所做的只是让它独立于主线程同时运行。那么只需要知道怎么实现线程的效果,仅仅两点,实现接口,继承。甚至这两点在本质上其实差别也不大,都是调用Thread类来做,区别只在于,一个有前戏一个没前戏

楼主看代码。。。。

 package daemon;

public class ThreadDe {
    public static void main(String[] args) {
//      test();
        (new ThreadDetest()).test();
    }

//  private static void test(){
//      new Thread(new ThreadDemoTest()).start();
//  }
}

//不用继承和实现
class ThreadDetest {
    public void test(){
        new Thread(new ThreadDemoTest()).start();
    }
}

class ThreadDemoTest implements Runnable{   
    @Override
    public void run() {
        System.out.println("aaa");
    }
} 

如果让一个线程实现Runnable接口,那么当调用这个线程的对象开辟多个线程时,可以让这些线程调用同一个变量;若这个线程是由继承Thread类而来,则要通过内部类来实现上述功能,利用的就是内部类可任意访问外部变量这一特性。

匿名内部类,底层其实是相当于继承或者实现类和接口

匿名内部类必须是继承一个抽象类或者实现接口

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!