1.Java Thread类
(1)java.lang.Thread执行了Runnable接口
(2)构造方法 Thread(ThreadGroup group, Runnable target, String name, long stackSize)
*group :指定当前线程的线程组,未指定时线程组为创建该线程所属的线程组
*target :指定运行其中的Runnable,一般都需要指定,不指定的线程没有意义,或者可以通过创建Thread的子类并重新run方法
name :线程的名称,不指定自动生成
stackSize:预期堆栈大小,不指定默认为0,0代表忽略这个属性。与平台相关,不建议使用该属性。
(3)yield()&sleep(0)方法效果等同
(4)interrupt()、join(long,int)等待线程终止、start()等方法都是Native方法的一层代理封装
(5)ThreadGroup存储Group对象:1.可以通过uncaughtException(Thread,Throwable)来捕获线程组内线程未捕获异常;2.可以interrupt()组内所有线程
2.Looper/HandlerThread类
(1)android.os.Looper是Android为消息循环队列添加的类,一个Looper维护一个MessageQueue
(2)android.os.HandlerThread是java.lang.Thread的一个子类,只不过在run()方法中调用Looper.prepare()初始了这个线程的Looper消息队列
*Looper.prepare() :在LocalThread注册当前Thread的Looper(这里的LocalThread可以理解成为一个静态map)
*Loope