2011-02-16 40 views
2

我正在編寫一個多線程Java應用程序,其中每個用戶請求都會根據用戶首選項創建一個應該使用不同語言環境的新線程。這不是一個Web應用程序,所以會話的概念在這裏不適用。Java語言環境對象作用域是線程還是應用程序?

有什麼辦法可以設置默認的Locale - 活動的 - 只在線程範圍內?我一直在文檔中查看它,並沒有說明默認的Locale是否適用於線程,類加載器,進程或整個JVM。

謝謝。問候。

回答

3

從Javadoc文檔Locale.getDefault

獲得此Java虛擬 機實例設置默認語言環境 的當前值。

默認語言環境絕對是一個JVM範圍的變量,不應該用於嘗試跟蹤用戶的語言環境。你應該看看Java Internationalization討論如何去使用這些類。

你的情況,好像你可以使用ThreadLocal<Locale>,看到ThreadLocal

0

在一個更小的點,你提到每個用戶請求創建一個新的線程..你可能要考慮使用線程池和重用線程滔滔不絕線程創建和銷燬會傷害性能。根據您的使用情況,您可能還希望對該線程池進行綁定,以防止大量用戶停止對您的應用程序進行磨合

+0

是的。問題是應用程序運行在不是servlet容器的第三方服務器上,而是用於遊戲目的的專用套接字服務器。該服務器使用線程池來創建和銷燬線程:) – davidcm 2011-02-16 23:12:18

相關問題