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