2

私は 2 つの別々のスレッド (Android SDK) を実行しています。メイン スレッドと、デジタル入力センサーの状態変化の数をカウントする別のスレッドです。メインスレッドで状態変更カウントにアクセスして、データを別の場所に送信したいと考えています。センサー スレッドを一時停止し、getter を使用して値を渡し、スレッドを再開することはできますか? また、サンプリング後にカウンターをリセットしたいと思います(セッターを使用しますか?)。

これを実装するためのベストプラクティスは何ですか?

4

3 に答える 3

0

同期されたキーワードを使用する必要があります。これにより、コードの平和が同時に1つのスレッドのみでアクセスされることが保証されます。これは、あなたと同様のユースケースを説明する詳細なリンクです:http: //docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html

于 2012-12-11T07:20:38.127 に答える
0

カウントがである場合はint、メインスレッドから問題なくアクセスできます。

于 2012-12-11T07:11:10.457 に答える
0

これは、生産者と消費者の問題に近いものです。単一の長さのブロッキング キューを持つことができます。

メインスレッド -- コンシューマ

他のスレッド (状態の変化をカウントする) --producer

プロデューサーとコンシューマーの問題を解決する Java API : BlockingQueue

他のスレッドで値を読み取り、BlockingQueue(サイズ 1) に配置します。メインスレッドはキューをチェックして値を読み取ります。値が読み取られると、「他のスレッド」は再び新しい値を入れることができます。これにより、値がメインスレッドによって読み取られてからリセットされることが保証されます。

API : http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/BlockingQueue.html

于 2012-12-11T06:35:15.180 に答える