4

新しいスレッドを開始するクラスがあり、ハンドラーを使用して ui スレッドに配列を書き込みます。スレッドセーフです。

これらのスレッドをタイマー タスクから開始した場合、これらのスレッドは UI スレッドでスレッドセーフですか?

ありがとうございました!

4

2 に答える 2

2

HandlerオブジェクトがUIスレッドにバインドされている場合は、(配列もUIスレッドにバインドされていると仮定して)の配列を更新しても安全ですHandler

Handlerドキュメント、特にこの部分を確認してください。

ハンドラーを使用すると、スレッドのMessageQueueに関連付けられたMessageオブジェクトとRunnableオブジェクトを送信および処理できます。各Handlerインスタンスは、単一のスレッドとそのスレッドのメッセージキューに関連付けられています。新しいハンドラーを作成すると、それを作成しているスレッドのスレッド/メッセージキューにバインドされます。その時点から、メッセージとランナブルがそのメッセージキューに配信され、メッセージから出てきたときに実行されます。列。

ハンドラーの主な用途は2つあります。(1)メッセージとランナブルを将来のある時点で実行するようにスケジュールする。(2)自分のスレッドとは異なるスレッドで実行されるアクションをキューに入れる。

これは、Handlerコードが属するスレッドで実行されることを示しています。

于 2012-12-20T12:27:19.333 に答える
0

AsyncTask実行するスレッドが適切にスレッドセーフである場合、UIスレッド、an、またはのどこからスレッドを開始してもかまいませんTimerTask

于 2012-12-20T12:28:16.700 に答える