打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
IdGenerator.java
package cn.te.project.util
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
/***
 * 使用Component注解修饰的类
 * 由spring管理时会为这个bean
 * 默认起个名字,这个名字就是类
 * 名的第一个单词的首字母小写,
 * 假如希望自己指定名字,需要在
 * 注解中进行配置.
 */
@Scope("singleton")//singleton表示单例
//@Scope("prototype")//prototype表示多例
@Component("idg")//给组件起个名字
//假如此对象由spring管理,则不采用延迟加载策略
@Lazy(value=false)//false表示不延迟加载
public class IdGenerator {
private Map<String,String> map=
//new HashMap<>();  //线程不安全,不锁商城
// new Hashtable<>(); // 线程安全,锁商城
new ConcurrentHashMap<>();  // 线程安全,锁换衣间

public IdGenerator() {
System.out.println("IdGenerator()");
}
/** @PostConstruct修改方法
* 在对象构建以后执行(初始化对象)*/
@PostConstruct
public void init(){
//将一个线程不安全的map转换为线程安全的map
map=Collections.synchronizedMap(map);
//从性能上讲不如ConcurrentHashMap性能高
System.out.println("init()");
}
/**@PreDestroy注解修饰的方法
* 在对象销毁之前执行(销毁对象资源)*/
@PreDestroy
public void destory(){
System.out.println("destory");
map.clear();
map=null;
}
}
//spring中如何优化对对象的使用?
//1)单例设计
//2)延迟加载





本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
SpringBoot WebSocket实现服务端、客户端
java并发容器(Map、List、BlockingQueue)
java线程深度解析(七)
Java编程技术之浅析Java容器技术
ConcurrentHashMap 与 HashMap 的区别是什么?
SpringBoot AOP构建多数据源的切换实践
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服