实习日记 08/04 day20 理解JavaWeb--线程异步

总览

在这里插入图片描述

Java多线程中除了同步发生,异步问题也是需要考虑的。
我在做安卓开发的时候,经常会遇到这种情况:
下载线程下载数据,下载完成后出现现在完成弹窗。
这时候开发要怎么写呢,首先想到的是通过Handler传递Massager转到主线程修改UI,这很简单

public Handler handler = new Handler() {
        public void handleMessage(Message msg) {
            if (msg.what == 0x123) {
                alswicth.setEnabled(false);
            }
            if (msg.what == 1699) {
                alswicth.setEnabled(true);
            }
            if (msg.what == 404) {
                btn_sj.setChecked(false);
                btn_fs.setChecked(false);
                btn_jr.setChecked(false);
                alswicth.setChecked(false);
                alswicth.setEnabled(false);
            }
        }

        ;
    };

但是真的这么写,你会发现你的Activity变得混乱不堪。这时候可以使用AsyncTask来实现异步,而AsyncTask是线程池的最佳实践,而线程池则是使用到了阻塞队列来实现。由此就将Java多线程的部分串联起来。

AsyncTask

在这里插入图片描述
AsyncTask是一个Android封装的一个轻量级异步类,他可以在线程池中执行后台任务,然后把执行的进度和最终结果传递给主线程并在主线程更新UI
AsyncTask内部封装了两个线程池SeriaExecutor和THREAD_POOL_EXECUTOR和一个Handler

使用实例:
点击按钮:启动PreExecute出现小弹窗,显示进度条
后台下载:doinbackground
ppublish和update进行更新进度条
结束执行onPostExecute关掉进度条

从阻塞队列开始

阻塞队列,顾名思义是与阻塞相关的一种数据结构,阻塞Blocking有以下两种情况:
1.当队列中没有数据的情况下,消费这段

到线程池

包装好的线程池–AsycTask

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值