【名师课堂】Java高级开发

【名师课堂】Java高级开发

Java核心第三部
156课时 |
31736人已学 |
(17 评论)

加入学习
加入学习

如果一个类直接继承了Thread类将会造成单继承的局限

Runnable接口 

public interface Runnable{

public void run();

}

}

Thread 构造方法

public Thread(Runnable target){}

多线程的启动永远都是Thread类的start()方法

对Runnable接口对象可以采用匿名对象,匿名内部类和Lambda函数表达式来定义

匿名内部类:

public class Test {

    public static void main(String args[]) {
        new Thread(new Runnable(){

            public void run() {
                System.out.println("Hello world");
                
            }
            
        }).start();

    }
}

使用Lambda函数表达式:

public class Test {

    public static void main(String args[]) {
        new Thread(()->System.out.println("Hello world")).start();

    }
}

 

[展开全文]

Thread:受单继承的局限。

用Runnable虽然解决了单继承问题,但是没有了start()方法,new Thread(new Runnable{  匿名内部类}).start()。这个时候也就启动了多线程,也就是说多线程启动永远都是Thread的start()。

[展开全文]

Thraed类是功能是进行线程的启动,但是如果一个类继承Thread类,进行单线程

java又提供另外一个实现模式:Runable

@FunctionalInterface

public interface Runnable{

   public void run();
}

可以发现在接口里面同时存在有一个run()方法,这一点和Thread是相同的。因为是接口的子类必须实现父类的方法。

MyThread类不再是Thread类,解决了但继承问题,但是没有了start()方法,需要关注Thread类提供的构造方法。

 构造方法:public Thread(Runnable target),可以接收Runnable的接口对象,通过Thread可以启动

范例:启动多线程。

多线程的启动都是Thread类的start()方法。

通过匿名内部类

 

[展开全文]

授课教师

阿里云开发者社区全面升级
一站式体验,助力云上开发!
进入新社区

相关课程

查看更多 >

本课程相关云产品