2010-07-30 25 views
1

黑莓版的SimpleDateFormat,net.rim.device.api.i18n.SimpleDateFormat線程安全嗎?我知道java.text.SimpleDateFormat不是,但沒有提及如果net.rim.device.api.i18n.SimpleDateFormat是線程安全的或不。如果我們假設它沒有被聲明,那麼它不是線程安全的?Blackberry的SimpleDateFormat線程安全嗎?

回答

1

API沒有提及。

它建議使用DateFormat.html#getInstance(int)這是某種工廠方法。

所以你可以做的是從不同的線程調用這個方法多次使用相同的參數,看看它是否總是返回相同的對象(與==比較)。如果是,則DateFormat可能會緩存返回的SimpleDateFormat實例。所以,因爲他們的API允許重用,你可能會認爲它是線程安全的。

+0

有趣的是,現在我腦海中出現了一個普遍的問題,即如何測試線程安全的API? – Vivart 2010-07-30 10:48:23

+0

也許這就是你的下一個SO問題:)一般來說,你可以檢查源代碼(如果提供的話)或編寫一個JUnit測試,這將測試數百萬次來自10-20個線程的調用API並測試數據損壞或拋出的異常。雖然不是100%確定的答案。 – cherouvim 2010-07-30 11:47:48

2

除非一類的Javadoc明確指出,它是線程安全的,你應該假設它不是。即使你可以看看源代碼和類似乎是線程安全的,也可能是是非線程在未來的版本...

DateFormat.getInstance(int)的Javadoc說:

返回:新SimpleDateFormat提供樣式的實例。

所以,如果你使用這種方法,你是保證拿到類的實例。假設您不在線程之間共享它,線程安全不應該成爲問題。