多线程的几种应用和区别

本文详细介绍了Android开发中多线程的常见应用,包括Thread、Runnable、Handler、HandlerThread和AsyncTask的使用和区别。通过示例展示了Runnable接口实现资源共享,Thread类的独立运行特性,HandlerThread的便利封装,以及AsyncTask的便捷性。同时,解释了Handler、Looper和MessageQueue在Android消息机制中的作用。
摘要由CSDN通过智能技术生成

多线程的应用在Android开发中是非常常见的,常用方法主要有:
1、继承Thread类
2、实现Runnable接口
3、Handler
4、HandlerThread
5、AsyncTask

先直接上结论:
Runnable可以实现资源的共享,同时处理同一资源(new thread中的参数都是同一个runnable)。
Thread类的线程间都是独立运行的,资源不共享(但是如果创建方式和runnable一样则可以实现资源共享,区别主要在于new thread中是否有参数)。
见https://www.jianshu.com/p/333ce4b3d5b8
HandlerThread是线程中的looper已经google给创建好了,可以直接使用looper来创建handler来使用。
AsyncTask一般写在主线程中,可以直接调用主线程中的变量,不需要handler等进行传输。

Thread和Runnable的比较:

啥都先不说,运行两段程序看看结果再分析
实现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 <=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值