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