上下文模式(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(