我有一个启动新线程的类,他们使用处理程序在ui线程中编写一个数组,它们是线程安全的。
如果我从计时器任务启动这些线程,它们仍然是用ui thred线程保护的吗?
谢谢!
答案 0 :(得分:2)
如果Handler
对象绑定到UI线程,则可以安全地更新Handler
中的数组(假设该数组也绑定到UI线程)。
检查Handler
documentation,尤其是这部分:
Handler允许您发送和处理与线程的MessageQueue关联的Message和Runnable对象。每个Handler实例都与一个线程和该线程的消息队列相关联。当您创建一个新的Handler时,它被绑定到正在创建它的线程的线程/消息队列 - 从那时起,它将消息和runnables传递给该消息队列并在消息出来时执行它们队列中。
Handler有两个主要用途:(1)安排消息和runnables作为将来的某个点执行; (2)将要在不同于自己的线程上执行的动作排入队列。
它声明Handler
代码在它所属的线程上执行。
答案 1 :(得分:0)
如果您运行的线程是正确的线程安全的,那么无论从哪个线程开始,无论是UI线程,AsyncTask
还是TimerTask
。