多线程设计模式-Servlet上下文模式(Threadlocal实现)

通过ThreadLocal实现的Servlet上下文模式,用于在网络请求中管理上下文数据,确保线程安全。该模式适用于多线程环境下,如从DB和HTTP获取数据,通过绑定ThreadLocal隔离各线程间的数据,防止干扰。然而,在线程池场景中,需要注意清除ThreadLocal缓存以避免内存泄漏。
摘要由CSDN通过智能技术生成

上下文模式(Threadlocal实现)

在web中碰到运行上下文内容,可以用threadlocal的原理来实现,通过这种方式,更能明白网络请求中的上下文是如何实现的

使用场景:网络请求的数据分别在DB和其他http中,通过threadlocal隔离其他线程的访问本线程的内容,达到多线程安全的目的

上下文内容属性

package com.ln.concurrent.chapter11;

/**
 * @ProjectName: java-concurrency
 * @Package: com.ln.concurrent.chapter11
 * @Name:Context
 * @Author:linianest
 * @CreateTime:2020/3/29 19:15
 * @version:1.0
 * @Description TODO: 定义上下文
 */

/**
 * context封装的属性
 */
public class Context {
   

    private String name;
    private String cardId;

    public void setName(String name) {
   
        this.name = name;
    }

    public String getName() {
   
        return name;
    }

    public void setCardId(String cardId) {
   
        this.cardId = cardId;
    }

    public String getCardId() {
   
        return cardId;
    }
}

请求从DB中获取数据

package com.ln.concurrent.chapter11;

/**
 * @ProjectName: java-concurrency
 * @Package: com.ln.concurrent.chapter11
 * @Name:QueryAction
 * @Author:linianest
 * @CreateTime:2020/3/29 19:13
 * @version:1.0
 * @Description TODO: 请求从DB中获取数据
 */
public class QueryFromDBAction {
   

    public void execute() {
   

        try {
   
            Thread.sleep(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值