首页 > 其他分享 >TransmittableThreadLocal实现父子线程之间数据传递

TransmittableThreadLocal实现父子线程之间数据传递

时间:2024-08-28 14:53:52浏览次数:13  
标签:String thread value 父子 threadLocal 线程 TransmittableThreadLocal new

1、引入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>transmittable-thread-local</artifactId>
    <version>2.14.5</version>
</dependency>

2、传递String参数

public class TransmittableThreadLocalDemo {
    private static TransmittableThreadLocal<String> threadLocal = new TransmittableThreadLocal<>();
 
    public static void main(String[] args) {
        // 在主线程中设置TransmittableThreadLocal的值
        threadLocal.set("Hello, World!");
 
        // 在新线程中获取TransmittableThreadLocal的值
        Thread thread = new Thread(() -> {
            String value = threadLocal.get();
            System.out.println("TransmittableThreadLocal value in new thread: " + value);
        });
        thread.start();
    }
}

3、传递对象

public class TransmittableThreadLocalDemo {
    private static TransmittableThreadLocal<RequestContext> threadLocal = new TransmittableThreadLocal<>();
 
    public static void main(String[] args) {
        // 在主线程中设置TransmittableThreadLocal的值
        RequestContext requestContext = new RequestContext(); 
        requestContext.setUserId("123");
        requestContext.setUserName("名字");
 
        // 在新线程中获取TransmittableThreadLocal的值
        Thread thread = new Thread(() -> {
            String value = threadLocal.getRequestContext().getUserId();
            System.out.println("TransmittableThreadLocal value in new thread: " + value);
        });
        thread.start();
    }
}

@Data
@AllArgsConstructor
@NoArgsConstructor
public class RequestContext(){
    private String userId;
    private String userName;

}

标签:String,thread,value,父子,threadLocal,线程,TransmittableThreadLocal,new
From: https://blog.csdn.net/weixin_47064437/article/details/141640432

相关文章

  • C#环境下支持多线程的异步日志记录器的设计与实现
    上篇博文提供了c++版异步日志类,本文提供同样功能的C#版的异步日志管理类。C#环境下支持多线程的异步日志记录器的设计与实现在现代应用程序开发中,日志记录是一项至关重要的任务,它帮助开发者追踪程序的运行情况,调试问题,并进行性能监控。特别是在高并发场景下,传统的同步日志......
  • Python系列(10)- Python 多线程
    多线程(Multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的系统包括对称多处理机、多核心处理器、芯片级多处理或同时多线程处理器。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。多线程是并行化......
  • QT/C++中的GDAL多线程应用(读取):发生的问题以及解决方案
    1.引言在使用GDAL库对TIF文件进行切割和创建瓦片金字塔时,为了提高创建效率,不得不考虑使用多线程处理。然而,在实际实现过程中,我遇到了许多问题。通过不断的尝试和优化,最终找到了有效的解决方案。本文将详细记录这一过程中的问题和解决方法。2.初始多线程尝试与问题2.1......
  • 多线程的使用-->2
    1.线程同步当多线程执行,对于一个共享变量进行操作时,会产生一些安全问题,称为同步问题。线程同步就是在多线程访问共享变量时,通过一定的机制,使得线程可以按照一定的顺序,每次只能有一个线程访问共享变量。1.1解决线程同步给程序枷锁   两种:①.悲观锁:必须要上锁,有具体的......
  • 多线程四-Lock锁及其原理分析
    JUC是什么可能有些不太关注底层代码,会不太理解juc是啥,比如之前的我,只知道是跟并发相关。juc其实就是并发包路径的缩写,java.util.concurrent.而Lock是其中锁的接口,有比如重入锁,读锁,写锁等一些具体实现。这部分源码理解起来还是有些难度,暂时先理解其大概思路,对于实现有一个印象,比......
  • vue:父子组件的通信
    上一篇:vue组件化开发在上一篇文章中,我们申明了一点,那就是组件之间是独立的,除非构建了通信。组件间为什么要构建通信?在单一文件中写上整个网站的代码逻辑,这无疑使得维护成本巨大。所以我们选择了组件化开发,把组件间独立起来,这样谁也不干涉谁,是谁的逻辑就在谁的文件中实现......
  • TCP并发服务器多线程和多进程方式以及几种IO模型
    1.阻塞I/O(BlockingI/O)在阻塞I/O模型中,当应用程序发起I/O操作时,整个进程会被阻塞,直到操作完成。在这个过程中,应用程序无法执行其他任务,必须等待I/O操作的完成。特点:简单性:编程简单,逻辑清晰,容易理解和实现。低效性:在高并发场景下,由于每个I/O操作都会阻塞整个进程,资......
  • 线程:线程创建pthread_create,线程间的同步与互斥
    线程的创建 线程的创建是通过调用pthread_create函数来实现的。该函数的原型如下:intpthread_create(pthread_t*thread,constpthread_attr_t*attr,void*(*start_routine)(void*),void*arg);参数说明:thread:指向pthread_t类型的指针,用于存储新线程的ID。attr:指向......
  • Android开发 - synchronized 关键字控制多个线程对共享资源的访问解析
    什么是synchronizedsynchronized一个关键字,用于实现线程同步。其主要作用是控制多个线程对共享资源的访问,确保被synchronized修饰的代码块或方法同一时间只有一个线程可以执行,从而避免数据不一致的问题为什么需要synchronized在多线程编程中,多个线程可能同时访问和修改......
  • 使用 Callable 和 FutureTask 创建线程
    转自:http://t.csdnimg.cn/jl1ZN原文链接:https://blog.csdn.net/wzhy2016/article/details/131178612 操作流程:   创建Callable实现类的实例,并实现call方法。   使用FutureTask类来包装Callable对象(第一步创建实现类的实例)。   使用FutureTask对象作为Thread对象的......