9. mybatis 的 SqlSession 如何保证线程安全
利用 9,"! 获取或者关闭 !" 对象,实现每一个线程都有自己的一个
!" 对象。
TheadLocal 线程局部变量
9,"!的作用和目的:用于实现线程内的数据共享,即对于相同的程序代码,
多个模块在同一个线程中运行时要共享一份数据,而在另外线程中运行时又共享另外一份
数据。
每个线程调用全局 9,"!对象的 方法,在 方法中,首先根据当前线
程获取当前线程的 9,"!对象,然后往这个 中插入一条记录,其
实是 9,"!对象,5!(是各自的 方法传进去的值。也就是每个线程其实都
有一份自己独享的 9,"! 对象,该对象的 .是 9,"!对象,值是
用户设置的具体值。在线程结束时可以调用 9,"!"523方法,这样会更快释
放内存,不调,用也可以,因为线程结束后也可以自动释放相关的 9,"!变量。
实现:
publicclass>!?
privatestatic9,"!@ !"AthreadLocal<new
9,"!@A23:
privatestatic !"B"factory<null:
88构造函数私有
private>!23?
C
88读取配置文件
static?
try?
$(<
>!class%&!"23%D"(2E !&"*%F!E3:
factory<new !"B"'(!23(!23:
Ccatch2GF"3?
923:
thrownewD(GF"23:
C
C
8HH
H获取 !"
H@return
H8
publicstatic !"% !"23?
!" !"<threadLocal%23:88从当前线程获取