2017-10-26 14 views
-2

私は今、一日拘束されている問題があります。私はスレッドを使ってテストを実装しています。それは機密だから、私はここにコードを投稿することはできませんが、私はあなたに構造を与えることができます。各スレッド内のコードがまたはエラーを与えていない場合がありスレッドごとに個別のリスナーが必要ですか?

class Something{ 
String error = ""; 
Listener listener = new Listener{ 
onError{ 
error = "something"; 
} 
... 
create some threads 
start threads 

、そのエラーを修正します。私の懸念は、複数のスレッドを持つと、リスナーを「混乱させる」ということです。

注意:リスナーはスレッド自体のものではありません(スレッドが停止しているかどうかを確認しません)。リスナーはスレッドから独立して実装されましたが、私はそれを必要とします。

多くの方に感謝します。ご不明な点があれば質問してください。

+0

「混乱」とはどういう意味ですか、あなたの問題が何であるかを理解することは本当に難しいです。また、あなたのコードが機密であるなら、私も誰も助けることができません。 – wax911

答えて

1

"リスナーを混乱させる"とは、リスナーが複数のスレッドから呼び出されたために発生する可能性があるエラーについて言います。リスナーが「スレッドセーフ」であり、複数のスレッドから呼び出すことができることを確認してください。たとえば、複数のスレッドが同じ構造を同時に変更しようとすると、他のスレッドをロックアウトせずに変数または構造体とやりとりするリスナーが問題になる可能性があります。

このメソッドは、ローカル変数または並行処理のためにロックされたメンバー/グローバル変数のみを処理する場合、問題はありません。あなたが共有できないコードを知らなくても、特定のアドバイスを提供することは難しいです。

JavaとAndroidのオンラインで「スレッドセーフ」を検索すると、役に立つ情報が見つかるはずです。あなたがしようとしていることは、珍しいことではありません:それは一般的な習慣ですが、あなたは気をつけなければなりません。

関連する問題