我有一个启动新线程的类,它们使用处理程序在 ui 线程中写入一个数组,它们是线程安全的。
如果我从计时器任务启动这些线程怎么办,它们仍然是 ui 线程安全的吗?
谢谢!
我有一个启动新线程的类,它们使用处理程序在 ui 线程中写入一个数组,它们是线程安全的。
如果我从计时器任务启动这些线程怎么办,它们仍然是 ui 线程安全的吗?
谢谢!
如果Handler
对象绑定到 UI 线程,则更新中的数组是安全的Handler
(假设数组也绑定到 UI 线程)。
检查Handler
文档,尤其是这部分:
Handler 允许您发送和处理与线程的 MessageQueue 关联的 Message 和 Runnable 对象。每个 Handler 实例都与单个线程和该线程的消息队列相关联。当您创建一个新的处理程序时,它会绑定到创建它的线程的线程/消息队列——从那时起,它会将消息和可运行对象传递到该消息队列并在它们从消息中出来时执行它们队列。
处理程序有两个主要用途:(1)安排消息和可运行文件在未来某个时间点执行;(2) 将要在与您自己的线程不同的线程上执行的操作排入队列。
它声明Handler
代码在它所属的线程上执行。
如果您运行的线程是正确的线程安全的,那么无论从 UI 线程、anAsyncTask
还是TimerTask
.