是不是只要不调用全局变量(这种变量是有状态的),就不存在同步问题啊。
解决方案 »
- struts2和spring整合问题(导入了struts-spring-plugin.jar)
- hibernate高手来
- jdom与xml进行 数据移动
- 在hibernate中调用oracle的sequence出现‘missing right parenthesis’错误,高手指教啊!~~~~~
- 求助
- java线程问题
- Eclipse3.1+MyEclipse4.0M2中如何配置Tomcat
- 在用javamail收邮件的时候,当附件大于40M的时候为什么不能读去后不能解析了呢?如何解决这个问题呢?
- 请教JDBC是否可以跨网段(路由器)访问数据库??
- 求解答!
- 一款人力资源管理系统!
- resin配置问题
return DATE_FORMAT.format(date);
}
}因为 DATE_FORMAT 是静态属性,因此只有一个实例,并发时会被多个线程同时访问,根据 API 文档,可以知道 SimpleDateFormat 不是一个线程安全的类,因此这段代码在 formatDate 方法会产生线程安全问题,在多线程请求处理的情况下会导致 SimpleDateFormat 内部的状态出错。
return new SimpleDateFormat("yyyy-MM-dd").format(date);
}
}因为局部变量会在 JVM 的线程栈中处理,而 JVM 的线程栈是每个线程隔离的,因此这里不会有线程安全问题。
import java.text.SimpleDateFormat;
import java.util.Date;public class DateUtil { private final static ThreadLocal<DateFormat> formats = new ThreadLocal<DateFormat>() {
protected DateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
}; public static String formatDate(Date date) {
return formats.get().format(date);
}
}