实现Runnable和继承Thread的区别

啥都先不说,运行两段程序看看结果再分析

实现Runnable接口的程序代码

public class ThreadTest1 implements Runnable {

    private int num = 10;

    @Override
    public void run() {
        for (int i = 0; i <= 100; i++) {
            if (num > 0) {
                System.out.println(Thread.currentThread().getName()+"执行结果:" + (num--));
            }
        }

    }

    public static void main(String[] args) {
        ThreadTest1 t1 = new ThreadTest1();

        Thread t01 = new Thread(t1, "线程1");
        Thread t02 = new Thread(t1, "线程2");
        Thread t03 = new Thread(t1, "线程3");

        t01.start();
        t02.start();
        t03.start();
    }
}

运行结果:

线程2执行结果:9
线程3执行结果:8
线程3执行结果:6
线程1执行结果:10
线程3执行结果:5
线程2执行结果:7
线程3执行结果:3
线程3执行结果:1
线程1执行结果:4
线程2执行结果:2

继承Thread类的实现代码

public class ThreadTest2 extends Thread{
    
    private int num = 10;

    @Override
    public void run() {
        
        for(int i =0; i <=100; i++) {
            if(num >0) {
                System.out.println(Thread.currentThread().getName()+"执行结果:"+(num--));
            }
        }        
    }
    
    public static void main(String[] args) {
        ThreadTest2 t01 = new ThreadTest2();
        ThreadTest2 t02 = new ThreadTest2();
        ThreadTest2 t03 = new ThreadTest2();
        t01.start();
        t02.start();
        t03.start(); 
    }
}

运行结果:

Thread-0执行结果:10
Thread-0执行结果:9
Thread-0执行结果:8
Thread-0执行结果:7
Thread-0执行结果:6
Thread-0执行结果:5
Thread-0执行结果:4
Thread-0执行结果:3
Thread-0执行结果:2
Thread-0执行结果:1
Thread-1执行结果:10
Thread-1执行结果:9
Thread-1执行结果:8
Thread-1执行结果:7
Thread-1执行结果:6
Thread-1执行结果:5
Thread-1执行结果:4
Thread-1执行结果:3
Thread-2执行结果:10
Thread-2执行结果:9
Thread-2执行结果:8
Thread-1执行结果:2
Thread-2执行结果:7
Thread-1执行结果:1
Thread-2执行结果:6
Thread-2执行结果:5
Thread-2执行结果:4
Thread-2执行结果:3
Thread-2执行结果:2
Thread-2执行结果:1

从上面的运行结果可以看出,两者的区别。

实现Runnable接口的,对于三个线程来说共享的是ThreadTest1对象的资源。

继承Thread类,三个线程都是独立的运行,线程间不共享资源。

所以可以总结出以下区别:

1.Runnable接口的话,可以避免单继承的局限性,具有较强的健壮性。

2.Runnable可以实现资源的共享,同时处理同一资源。

3.Thread类的线程间都是独立运行的,资源不共享。

4.继承Thread类不再被其他类继承(java不存在多继承)

转载于:https://www.cnblogs.com/fxust/p/8998696.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值