2011-02-16 47 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

相关问题