ThreadPoolTaskExecutor 使用ThreadLocal 示例
时间: 2023-06-22 08:44:38 浏览: 104
Java多线程编程中ThreadLocal类的用法及深入
好的,下面是一个使用 ThreadPoolTaskExecutor 和 ThreadLocal 的示例代码:
```java
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
public class MyService {
private ThreadPoolTaskExecutor executor;
private ThreadLocal<String> threadLocal = new ThreadLocal<>();
public MyService() {
executor = new ThreadPoolTaskExecutor();
executor.initialize();
}
public void doSomething() {
threadLocal.set("value");
executor.execute(() -> {
String value = threadLocal.get();
// 在线程池中执行任务,可以访问到上面设置的 ThreadLocal 变量
// TODO: 执行具体任务
});
threadLocal.remove();
}
}
```
在上面的示例中,我们首先创建了一个 ThreadPoolTaskExecutor,然后在 doSomething 方法中,我们设置了一个 ThreadLocal 变量,并将其值设置为 "value",接着我们使用 execute 方法将一个任务提交到线程池中执行。在任务执行时,我们可以通过调用 threadLocal.get() 方法来访问到上面设置的 ThreadLocal 变量。注意,在任务执行完毕后,我们需要手动调用 threadLocal.remove() 方法来清除 ThreadLocal 变量,避免内存泄漏。
阅读全文