2

我正在运行两个单独的线程(Android SDK)一个主线程和另一个计算数字输入传感器上状态变化的数量。我希望访问主线程中的状态更改计数以将数据发送到其他地方。我是否能够挂起传感器线程,使用 getter 传递值,然后恢复线程?我还想在采样后重置计数器(使用设置器?)。

实现这一点的最佳做法是什么?

4

3 回答 3

0

您应该使用 synchronized 关键字,这可以保证您的代码和平只被一个线程同时访问。这是一个包含更多详细信息的链接,描述了与您类似的用例:http: //docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html

于 2012-12-11T07:20:38.127 回答
0

这类似于生产者消费者问题。您可以有一个单一长度的阻塞队列。

主线程——消费者

其他线程(计算状态变化)--producer

解决生产者消费者问题的Java API: BlockingQueue

读取其他线程中的值,并将其放入 BlockingQueue(size 1)。主线程将检查队列并读取值。读取值后,“其他线程”可以再次输入新值。这将保证您的值被主线程读取然后重置。

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

于 2012-12-11T06:35:15.180 回答
0

如果计数是int,您可以从主线程访问它而不会出现问题。

于 2012-12-11T07:11:10.457 回答