【发布时间】:2016-04-19 00:40:09
【问题描述】:
我试图创建一个静态方法,一次可以被不同类的多个方法访问。
由于它是静态的,它会被锁定,我会得到不同的结果和性能问题。
有没有更好的方法可以让多个方法同时访问这些方法?
在 Spring Framework 中有没有更好的方法来处理这个问题?
public class TestUtil {
public static SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
public static java.sql.Date getLastDayOfMonth(String month,intyear)
throws ParseException{
switch (month) {
case "jan":
return new java.sql.Date(f.parse(year+"-1-31").getTime());
case "feb": if(isLeapYear(year))
return new java.sql.Date(f.parse(year+"-2-29").getTime());
else
return new java.sql.Date(f.parse(year+"-2-28").getTime());
case "mar":
return new java.sql.Date(f.parse(year+"-3-31").getTime());
case "apr":
return new java.sql.Date(f.parse(year+"-4-30").getTime());
case "may":
return new java.sql.Date(f.parse(year+"-5-31").getTime());
case "jun":
return new java.sql.Date(f.parse(year+"-6-30").getTime());
case "jul":
return new java.sql.Date(f.parse(year+"-7-31").getTime());
case "aug":
return new java.sql.Date(f.parse(year+"-8-31").getTime());
case "sep":
return new java.sql.Date(f.parse(year+"-9-30").getTime());
case "oct":
return new java.sql.Date(f.parse(year+"-10-31").getTime());
case "nov":
return new java.sql.Date(f.parse(year+"-11-30").getTime());
case "dec":
return new java.sql.Date(f.parse(year+"-12-31").getTime());
default: month = "Invalid month";
return null;
}
}
}
【问题讨论】:
-
是什么让您认为多线程是这里的性能瓶颈?顺便说一句,SimpleDateFormat isn't thread safe:“日期格式不同步。建议为每个线程创建单独的格式实例。如果多个线程同时访问一个格式,则必须在外部同步。”
标签: java multithreading spring design-patterns