继承 Thread 类和实现 Runnable 接口的区别

多线程的应用在Android开发中是非常常见的,常用方法主要有:

1.继承Thread类(继承 Thread 类和实现 Runnable 接口的区别)

2.实现 Runnable 接口(继承 Thread 类和实现 Runnable 接口的区别)

3.Handler

4.AsyncTask(异步任务)

5.HandlerThread

今天来看一下继承 Thread 类和实现 Runnable 接口的区别:

1.继承 Thread 类 

    class MyThread extends Thread {
        private int work = 4;
        private String name;

        public MyThread(String name) {
            this.name = name;
        }

        public void run() {
            for (int i = 0; i < 5000; i++) {
                if (work > 0) {
                    Log.e("=====Thread", name + "上班" + work-- + "个小时");
                }
            }
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyThread mt1 = new MyThread("张三");
        MyThread mt2 = new MyThread("李四");
        MyThread mt3 = new MyThread("赵五");
        mt1.start();
        mt2.start();
        mt3.start();
    }

打印结果如下:

可以看出,张三,李四和赵五三个人每个人分别上班4个小时;

2.实现 Runnable 接口

    class MyRunnable implements Runnable {
        private int work = 8;

        @Override
        public void run() {
            for (int i = 0; i < 500; i++) {
                if (work > 0) {
                    Log.e("=====Runnable", Thread.currentThread().getName() + "上班" + work-- + "个小时");
                }
            }
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        MyRunnable mt = new MyRunnable();
        Thread t1 = new Thread(mt, "张三");
        Thread t2 = new Thread(mt, "李四");
        Thread t3 = new Thread(mt, "赵五");
        t1.start();
        t2.start();
        t3.start();
    }

打印结果如下:

可以看出,张三,李四和赵五三个人共同上班时间为8个小时;

================================================

可以看出上面继承 Thread 类和实现 Runnable 接口打印结果完全不同;

继承 Thread 类:我们创建了三次 MyThread 对象,也就是创建了三个任务(工作四个小时这个任务)和三个线程(张三,李四和赵五三个人),每个线程去完成自己的任务(每个人去完成自己的工作);即多个线程分别完成自己的任务。

实现 Runnable 接口:我们创建了一个 MyRunnabld 对象(工作八个小时这个任务)和三个线程(张三,李四和赵五三个人);让这三个线程去共同完成一个任务(三个人共同完成一个工作);即多个线程共同完成一个任务。

到此为止继承 Thread 类和实现 Runnable 接口的区别就讲完了。

提醒:每个程序至少运行两个进程,一个是主线程,一个是垃圾收集线程;

在 java 中所有的线程是同时启动的,具体到哪个先执行,要看是谁先得到 CPU 资源;

猜你喜欢

转载自blog.csdn.net/wuqingsen1/article/details/82896704
今日推荐