多语言展示
当前在线:342今日阅读:103今日分享:49

Spring如何处理线程并发问题?

Spring如何处理线程并发问题?
工具/原料

Spring

方法/步骤
1

1.在ThreadLocal类中有一个Map,用于存储每一个线程的变量副本,Map中元素的键为线程对象,而值对应线程的变量副本,SimpleThreadLocal方法代码:

2

2.通过一个具体的实例了解一下ThreadLocal的具体使用方法SequenceNumber 方法代码:

3

3.TestClient线程产生一组序列号,在③处,我们生成3个TestClient,它们共享同一个SequenceNumber实例。运行以上代码,在控制台上输出以下的结果:

4

4.非线程安全的变量以ThreadLocal存放,在同一次请求响应的调用线程中,所有关联的对象引用到的都是同一个变量,通过实例能够体现Spring对有状态Bean的改造思路。

5

5.因为addTopic()方法是非线程安全的,必须在使用时创建一个新TopicDao实例(非singleton)。使用ThreadLocal保存Connection变量方法代码

6

6.从ThreadLocal中获取线程对应的Connection方法代码

推荐信息