7 多线程机制

作者: jadefly | 来源:发表于2018-04-13 17:17 被阅读0次

    1.基本多线程概念参考java基础文集

    2.AnsyncTask异步任务

    3.Handler消息传递机制

    多线程相关概念

    应用程序(Application):为了完成特定任务,用某种语言编写的一组指令集合(一组静态代码);

    进程(Process):运行中的程序,系统调度与资源分配的一个独立单位,操作系统会为每个进程分配一段内存空间,

                              程序依次动态执行,经历代码加载 -> 执行 -> 执行完毕的完整过程;

    线程(Thread):比进程更小的执行单元,每个进程可能有多条线程,线程需要放在一个进程中才能执行,

                            线程是由程序负责管理的,而进程则是由系统进行调度的;

    多线程概念(Multithreading):并行地执行多条指令,将CPU的时间片按照调度算法,分配给各个线程,

                                                   实际上是分时执行的,只是这个切换的时间很短,用户感觉是同时而已;

    同步:当执行某个功能,在没有得到结果之前,一直阻塞。(即必须做完一件事再做下一件)

    异步:和同步相对,执行某个功能无需等待结果就可以执行下一个,完成后会通知我们。

    Android线程相关概念

    MainThread 主线程(UI线程):1.应用启动时自动创建;

                                                         2.一般处理事件分发和对UI控件的处理,和用户进行交互(eg:点击事件,数据更新);

                                                         3.Android4.0之后UI线程不能访问网络资源或执行耗时操作,必须开启子线程;

    WorkThread 子线程(工作线程):1.可以和主线程同时进行,把主线程分配的耗时操作在后台做完,把结果返回给主线程;

    规定:1.主线程不能被阻塞 (ANR : Application Not Responding 原因:主线程中进行耗时操作,造成主线程阻塞);

               2.非主线程不能更新UI;

    Android中实现异步并更新UI的方式:

                1.使用Handler,sendMessage通知UI更新;

                2.利用Activity.runOnUiThread(Runnable),传入带更新UI代码的runnable对象;

                3.使用官方封好的轻量级异步类AsyncTask,是对Thread+Handler良好的封装;

                (进度可控,但只适合简单异步操作,一般项目中还是会用第三方异步网络框架)

                4.事物总线(EventBus?)

    android中常见需要异步的操作:网络操作,图片加载,数据传输等。

    相关文章

      网友评论

        本文标题:7 多线程机制

        本文链接:https://www.haomeiwen.com/subject/iavejxtx.html