Results 3 comments of Bing

说道handler就不得不提 `Looper`,`MessageQueue` 和 `Handler`。 Looper:它在消息机制里是用来把普通线程转成looper线程的(Looper.prepare()),并担当消息循环的任务,当然,`UI` 线程是通过Looper.PrepareMainLoper()。 它会开启无限循环(Loper.loop())并不停的从 `MessageQueue` 中查看是否有新消息,如果有就拿出来处理,如果没有呢,就阻塞(其实真正的阻塞在 `MessageQueue` 的 `next` 里)。Loper在构造的时候会构建一个 `MessageQueue` 并持有它的引用。 `MessageQueue`: 消息队列,它用来插入(enqueueMessage),读取消息(next)。它虽然是个消息队列,但实际实现是个单链表,因为单链表在插入和读取上有优势。它插入是根据时间戳排序来的,根据时间戳的排序来指定next的下一条消息。而当next读取的时候,如果有消息,就取出来,如果没有,就阻塞。如果 `next` 取出来是 null,那么就表示整个app可以结束运行了。 `Handler` 的主要工作就是负责消息的发送和接收了。发送消息是 `post` 和 `send` 的一堆函数,其实到最后 `enqueueMessage()` 来进行入队,接收消息处理则是通过msg的next里返回的 `looper` 在交给...

1.hashMap是线程不安全的,hashTable是线程安全的。 2.hashMap允许key为null,且只允许一个存在,hashtable不允许。