Java线程切换(一)
摘自: https://www.cnblogs.com/woyuwozhouxuanjiu-ningzuowo/p/11774265.html Java线程切换(一) (本文由言念小文原创,转载请注明出处) 一 前言 有Android开发经验的同学都清楚,UI的更新必须在主线程中进行,且主线程不能被阻塞,否则系统ANR异常。我们往往做一些数据处理是耗时操作,必须要在子线程中进行,然后再将处理后的数据切换到主线程去更新UI,这便是线程切换。 线程切换的本质是“数据的切换”,即将数据从一个线程传递到另一个线程。 二 案例描述 老风格,先给出场景案例,然后通过线程切换实现该案例。 案例:在线程A中调用api发送一段数据data,data最终通过线程切换由线程B执行数据处理动作。 三 线程切换基本原理 所谓线程切换,本质就是“数据在线程间切换”,即将一个线程A中的数据,传递到另一个线程B执行数据处理操作。基于以上认知,比较自然的实现逻就是:将线程A中的数据进行拷贝,线程B获取到拷贝数据,然后进行处理,如下图所示。 四 案例实现代码 首先创建一个DataHandler类,该类中定义了数据拷贝方法和数据处理线程。在DataHandler中定义了一个用于数据副本存放的成员变量mData;外部模块可通过sendData()将数据拷贝到DataHandler中