39、java的Runnable接口

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_18077275/article/details/89813841

1、使用Runnable接口

使用Thread子类创建线程的优点是:可以在子类中增加新的成员变量,使线程具有某种属性,也可以在子类中新增加方法,使线程具有某种功能。 
但是,Java不支持多继承,Thread类的子类不能再扩展其他的类。
 
 

2、Runnable接口与目标对象

创建线程的另一个途径就是用Thread类直接创建线程对象。使用Thread创建线程通常使用的构造方法是:
Thread(Runnable target)   
该构造方法中的参数是一个Runnable类型的接口。
在创建线程对象时必须向构造方法的参数传递一个实现Runnable接口类的实例,该实例对象称作所创线程的目标对象,当线程调用start()方法后,一旦轮到它来享用CPU资源,目标对象就会自动调用接口中的run()方法。
3、实现Runnable和继承Thread区别

1), 一个类只能继承一个父类,存在局限;一个类可以实现多个接口
2), 在实现Runable接口的时候调用Thread(Runnable target)创建进程时,使用同一个Runnable实例,则建立的多线程的实例变量也是共享的。但是通过继承Thread类是不能用一个实例建立多个线程,故而实现Runnable接口适合于资源共享。当然,继承Thread类也能够共享变量,能共享Thread类的static变量;
3), Runnable接口和Thread之间的联系:
public class Thread extends Object implements Runnable
可以看出Thread类也是Runnable接口的子类;
4、示例代码

Demo44 .java
public class Demo44 {

    public static void main(String[] args) {
        House house = new House();
        house.setCake(10);
        
        Thread antRed = new Thread(house);
        antRed.setName("红蚂蚁");
        Thread antBlack = new Thread(house);
        antBlack.setName("黑蚂蚁");
        
        antRed.start();
        antBlack.start();
    }

}

Demo44.java
public class Demo44 {

    public static void main(String[] args) {
        House house = new House();
        house.setCake(10);
        
        Thread antRed = new Thread(house);
        antRed.setName("红蚂蚁");
        Thread antBlack = new Thread(house);
        antBlack.setName("黑蚂蚁");
        
        antRed.start();
        antBlack.start();
    }

}
 

猜你喜欢

转载自blog.csdn.net/qq_18077275/article/details/89813841
今日推荐