His*_*His 16 java timezone thread-safety
我希望我的应用程序只有一个TimeZone对象,它将被许多SimpleDateFormat人和Calendar其他地方的对象同时使用.这是为了避免总是这样做TimeZone.getTimeZone(ID).
我知道SimpleDateFormat并且Calendar类不是线程安全的,这就是为什么我配置一个线程来始终创建它们的新实例.但那怎么样TimeZone?我不清楚我是否可以安全地执行以下操作:
final TimeZone tz = TimeZone.getTimeZone("GMT");
...
//Thread 1.
Thread t1 = new Thread(Runnable(){
public void run()
{
Calendar cal = Calendar.getInstance(tz);
...
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.setTimeZone(tz);
...
}
});
t1.start();
...
//Thread 2.
Thread t2 = new Thread(Runnable(){
public void run()
{
Calendar cal = Calendar.getInstance(tz);
...
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.setTimeZone(tz);
...
}
});
t2.start();
...
Run Code Online (Sandbox Code Playgroud)
谢谢!
它不是.
你不需要它.您的代码将其用作:
final TimeZone tz = TimeZone.getTimeZone("GMT");
......
// thread 1 SimpleDateFormat instance
sdf.setTimeZone(tz);
// thread 2 SimpleDateFormat instance
sdf.setTimeZone(tz);
Run Code Online (Sandbox Code Playgroud)
你有两个线程使用相同的时区,但由于你没有修改它,你不需要它是线程安全的.
您可以修改的唯一内容是ID,但即便如此,您也可以,因为其余属性是只读的
你可以遇到麻烦的唯一方法是更改id并将你自己的时区缓存,如果你总是得到它TimeZone.getTimeZone()也是安全的,因为这种方法是线程安全的.
| 归档时间: |
|
| 查看次数: |
5235 次 |
| 最近记录: |