TransmittableThreadLocal使用
时间: 2023-11-13 20:47:22 浏览: 225
TransmittableThreadLocal 是一个与线程相关的变量,它可以在多个线程间传递值。与普通的 ThreadLocal 不同,TransmittableThreadLocal 在线程池或者线程复用的情况下,能够正确地传递值。
使用 TransmittableThreadLocal 需要以下步骤:
1. 创建一个 TransmittableThreadLocal 对象,并指定保存的值的类型。
2. 在需要使用线程间传递值的地方,使用 set 方法来设置值。
3. 在其他线程中,通过 get 方法获取到之前设置的值。
下面是一个使用 TransmittableThreadLocal 的示例代码:
```java
public class MyRunnable implements Runnable {
private static TransmittableThreadLocal<String> threadLocal = new TransmittableThreadLocal<>();
@Override
public void run() {
threadLocal.set("Hello, World!");
System.out.println(threadLocal.get());
}
}
public class Main {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(2);
executorService.execute(new MyRunnable());
executorService.execute(new MyRunnable());
executorService.shutdown();
}
}
```
在上面的示例中,我们创建了一个 TransmittableThreadLocal 对象 threadLocal,并在每个线程中设置了值为 "Hello, World!"。在每个线程中,我们通过 get 方法获取到设置的值并打印出来。由于使用了 TransmittableThreadLocal,每个线程都能正确地获取到设置的值。
阅读全文