继承 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-- + "个小时");}}}}@Overrideprotected 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;@Overridepublic void run() {for (int i = 0; i < 500; i++) {if (work > 0) {Log.e("=====Runnable", Thread.currentThread().getName() + "上班" + work-- + "个小时");}}}}@Overrideprotected 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 资源;


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部