ThreadLoad是线程安全的,可以把一个对象绑定到当前线程
SqlsessionTemplate是线程共享的(底层通过ThreadLoad来实现)
要实现对象在线程内部共享,可以使用ThreadLoad对象可以把对象B绑定到当前线程A,其中Key是ThreadLoad,value就是被绑定的对象,如下图
== 使用ThreadLoad对象把SimpleDateFormat绑定到当前线程使SimpleDateFormat在当前线程中只有一份==
demo
package com.cy.java.thread;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* 何为线程不安全?
* 多个线程在某个共享数据集上的操作导致了数据的不正确。
* 导致线程不安全的原因?
* 1)多个线程在并发执行
* 2)多个线程存在共享数据集
* 3)多个线程在共享数据集上的操作不是原子操作。
* 如何保证线程线程安全?
* 1)取消并发。
* 2)取消共享。(每个线程操作自己那份,例如实用threadlocal进行对象绑定)
* 3)保证操作的原子性。(加锁-synchronized,Lock)
*/
//系统设计:低耗,高效
class DateUtils{
//方案1
// public static String format(D