有的方法是不需要线程安全的,所以就不需要做线程安全处理
有的方法需要线程安全,比如售票,多个线程都在售票,售出一张就需要在总数中减掉一张,这个时候就需要线程安全,这个时候就可以把操作售票的方法用线程锁,或者隐式方式加线程关键字修饰,这个时候这个方法只能一个线程调用,其他的线程,只能等待使用的线程释放锁后,才能调用这个方法。
这样就保证了线程安全。
你的单例类加@Component注解;然后可以直接在Service层用@Resource注入。
其实如果你的这个单例是全局的话,可以直接在项目启动时添加到ServletContext 或者 Spring的Application里。
比如 ,配置启动监听
xxx.xxx.web.listener.StartListener
然后在StartListener类里可以如下设置
public class StartListenerimplements ServletContextListener {
private static ApplicationContext applicationContext = null;
public void contextInitialized(ServletContextEvent sce) {
//System.out.println("ServletContext对象创建");
//初始化 ApplicationContext 对象
applicationContext = WebApplicationContextUtils.getRequiredWebApplicationContext(sce.getServletContext());
//设置点击量
sce.getServletContext().setAttribute("单例名称",单例实体);
}
加注解引入咯