一般通过ThreadLoacl表示在通一个线程里面值,A服务set,B服务Get是两个线程了,这里应该采用token的方式,A服务Set后返回一个token,B服务用这个token去Get
以下答案引用自GPT-3大模型,请合理使用:
解决方案:
可以创建一个线程池,让A服务在线程A中set进去ThreadLocal,而B服务再线程B中取出ThreadLocal,这样就能确保在同一个线程中共享同一个ThreadLocal对象。如下所示:
A服务:
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(() -> {
// 在这个线程中set进ThreadLocal
String info = "Some info";
ThreadLocal<String> threadLocal = new ThreadLocal<>();
threadLocal.set(info);
});
B服务:
ExecutorService executorService = Executors.newSingleThreadExecutor();
executorService.execute(() -> {
// 在这个线程中get出ThreadLocal
ThreadLocal<String> threadLocal = new ThreadLocal<>();
String info = threadLocal.get();
System.out.println("Info: " + info);
});
上面创建的是一个单线程线程池,保证A服务和B服务都在同一个线程中执行,从而保证ThreadLocal在同一个线程之间可以共享。
如果我的回答解决了您的问题,请采纳我的回答