多线程变量访问

时间:2012-12-11 05:51:04

标签: java android multithreading

我正在运行两个单独的线程(Android SDK)主线程,另一个计算数字输入传感器上的状态更改次数。我希望访问主线程中的状态更改计数以将数据发送到其他位置。我能够暂停传感器线程,使用getter传递值,然后恢复线程吗?我还想在采样后重置计数器(使用setter?)。

实施此操作的最佳做​​法是什么?

3 个答案:

答案 0 :(得分:0)

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

主要线程 - 消费者

其他线程(计算状态更改)--producer

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

在其他线程中读取值,并将其放在BlockingQueue(大小为1)中。主线程将检查队列并读取值。一旦读取了值,“其他线程”就可以再次设置一个新值。这将保证您的值被主线程读取然后重置。

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

答案 1 :(得分:0)

如果计数是int,您只需从主线程访问它即可。

答案 2 :(得分:0)

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