2014-01-06 17 views
0

我正在实现一个基于java的指数计,它将有一个初始值(比如说1.0),并且会随着时间成倍地衰减。另一个函数会随着时间的推移增加计量值。现在我需要一些帮助来开发线程安全。实现一个线程安全的指数计

我在想Java定时器或执行器来创建衰减功能,每5毫秒就会减少测量值。同时另一个函数,当被调用时会增加值。

现在我假设它会遇到并发问题,所以需要帮助才能正确实现它。

我的问题是:

  1. 我如何设计一个类,将执行该功能,以减少值每5毫秒。

  2. 如何使线程安全,以便其他线程可以更新相同的变量。

任何帮助?

+2

你有没有看着[振荡定时器( http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html)? –

回答

1

是的,仪表变量会有并发性。

使用线程安全实现(例如AtomicInteger)来保存该值。多个线程可以安全地同时更新这个变量。

对于减少该值的函数,请使用Timer。方法schedule会让你指定一个句点。

(注意:您可以通过声明的变量挥发性实现同步,但在你着手为在此之前,请确保您充分了解影响和隐患,如运行var++