利用ThreadLocal获取或者关闭SqlSession对象,实现每一个线程都有自己的一个SqlSession对象。
TheadLocal 线程局部变量
ThreadLocal 的作用和目的:用于实现线程内的数据共享,即对于相同的程序代码,多个模块在同一个线程中运行时要共享一份数据,而在另外线程中运行时又共享另外一份数据。
每个线程调用全局 ThreadLocal 对象的 set 方法,在 set 方法中,首先根据当前线程获取当前线程的 ThreadLocalMap 对象,然后往这个 map 中插入一条记录,key 其实是 ThreadLocal 对象,value 是各自的 set 方法传进去的值。也就是每个线程其实都有一份自己独享的 ThreadLocalMap对象,该对象的 Key 是 ThreadLocal 对象,值是用户设置的具体值。在线程结束时可以调用 ThreadLocal.remove()方法,这样会更快释放内存,不调,用也可以,因为线程结束后也可以自动释放相关的 ThreadLocal 变量。
实现:
public class Util {
private static ThreadLocal<SqlSession> threadLocal &