问题描述
模板类需要绑定数据连接或会话的资源。但这些资源本身是非线程安全的,也就是说它们不能在同一时刻被多个线程共享。虽然模板类通过资源池获取数据连接或会话,但资源池本身解决的是数据连接或会话的缓存问题,并非数据连接或会话的线程安全问题。红色那段琢磨不出来真谛 ? 请高手详细指点
解决方案
HashMap本身不是线程安全的,为了在SimpleThreadLocal中使用,所以通过Collections.synchronizedMap(new HashMap());得到一个线程安全的Map。这样多个线程的情况下,各个线程会串行地访问valueMap。比如调用get,set,remove等方法时,能够保证valueMap中数据的完整性。
解决方案二:
private Map valueMap = Collections.synchronizedMap(new HashMap());//这样写的目的???? Threadlocal是每次一个线程访问,他就复制一份副本,上面那句话的作用就是让每次产生的副本不一样,这样就使得ThreadLocal线程安全了
时间: 2024-10-21 21:57:00