Che*_*eng 4 java concurrency thread-local
而不是编写以下非线程安全的方法.
private static final Calendar calendar = Calendar.getInstance();
public void fun() {
// Going to call mutable methods in calendar.
}
Run Code Online (Sandbox Code Playgroud)
我将其更改为线程安全版本.
public void fun() {
final Calendar calendar = Calendar.getInstance();
// Going to call mutable methods in calendar.
}
Run Code Online (Sandbox Code Playgroud)
即使对于同一个线程,我也不是每次创建一个新实例,而是通过执行改进
public void fun() {
final Calendar calendar = getCalendar();
// Going to call mutable methods in calendar.
}
/**
* Returns thread safe calendar.
* @return thread safe calendar
*/
public Calendar getCalendar() {
return calendar.get();
}
private static final ThreadLocal <Calendar> calendar = new ThreadLocal <Calendar>() {
@Override protected Calendar initialValue() {
return Calendar.getInstance();
}
};
Run Code Online (Sandbox Code Playgroud)
对于我的第3种方法,是否需要调用ThreadLocal.remove?
| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |