2014-01-06 19 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++