首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java多线程父子线程关系 多线程中篇(六)

有的时候对于Java多线程,我们会听到“父线程、子线程”的概念。...严格的说,Java中不存在实质上的父子关系 没有方法可以获取一个线程的父线程,也没有方法可以获取一个线程所有的子线程线程的消亡与父线程的消亡并没有任何关系,不会因为父线程的结束而导致子线程退出(操作系统中如此...、父线程ThreadLocal(稍后讲解)都是从当前线程获取的 除了一些初始值的设置来自于所谓“父线程”之外,并没有强关系 所以说,对Java中的线程,父线程的概念,只是一种逻辑称呼,创建线程的当前线程就是新线程的父线程...,新线程的一些资源来自于这个父线程 在init方法中,对于所谓父线程的处理逻辑,换一个说法就是借助于当前正在运行的线程,对新创建线程进行一些必要的赋值与初始化 测试 下面的示例中,在主线程中创建了一个线程...父线程的准确称呼应该被叫做当前线程的创建线程 当听到父线程的说法时,应该立即联想到的是创建线程,创建新线程时一些资源的供给者 一个线程与被他创建出来的线程,除了在创建的时候(init)会有一定的依赖交互之外

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ThreadLocal父子线程数据传递方案

    Threadlocal中是返回 *t.theadLocals,而在这里却是返回了inheritableThreadLocals,因为 * Thread类中也有一个要保存父子传递的变量...A:一个常见的想法就是把父线程的所有的值都copy到子线程中。 下面来看看在线程new Thread的时候线程都做了些什么?...} } } } 恩,到了这里,大致的解释了一下InheritableThreadLocal为什么能解决父子线程传递...我们列举一下线程池的特点: 为了减小创建线程的开销,线程池会缓存已经使用过的线程 生命周期统一管理,合理的分配系统资源 对于第一点,如果一个子线程已经使用过,并且会set新的值到ThreadLocal中...更新父线程ThreadLocal值? 如果线程之间除了要能够得到父线程中的值,同时想更新值怎么办呢?

    1.5K30

    线程池遇到父子任务,有大坑,要注意!

    线程池的线程都被接口 1 给占住了,没有资源去执行队列里面的接口 3 任务。 相互等待,一直僵持。 我们的 Demo 还是能比较清晰的看到父子任务之间的关系。...但是在这个微服务的场景下,在无形之间,就形成了不易察觉的父子任务关系。 所以就踩到了这个坑。 怎么避免 找到了坑的原因,解决方案就随之而出了。...父子任务不要共用一个线程池,给子任务也搞一个自定义线程池就可以了: 运行起来看看日志: 首先整体运行时间只需要 2s 了,达到了我想要的效果。...避免出现线程池的线程都在执行非核心逻辑了,反而重要的任务在队列里面排队去了。 这就有点不合理了。 最后,一句话总结这个问题: 如果线程池的任务之间存在父子关系,那么请不要使用同一个线程池。...这篇文章是 2020 年写的,其中就是使用了父子任务+CountDownLatch 的模式,来实现所谓的“多线程事务”。 在文中我还特别强调了: 不能让任何一个任务进入队列里面。

    9510

    ThreadLocal父子线程数据传递方案(修正篇)

    A:一个常见的想法就是把父线程的所有的值都copy到子线程中。 下面来看看在线程new Thread的时候线程都做了些什么?...} } } } 恩,到了这里,大致的解释了一下InheritableThreadLocal为什么能解决父子线程传递...我们列举一下线程池的特点: 为了减小创建线程的开销,线程池会缓存已经使用过的线程 生命周期统一管理,合理的分配系统资源 对于第一点,如果一个子线程已经使用过,并且会set新的值到ThreadLocal中...,创建了一个只有1个线程线程池,如果创建的线程池有多个线程,可能看不到线程复用的效果。...可以看到,当第一个线程覆盖了父线程的值后,后面的子线程就拿不到父线程的值了。

    5.5K41

    InheritableThreadLocal类原理简介使用 父子线程传递数据详解 多线程中篇(十八)

    ,类型分别为:ThreadLocal和InheritableThreadLocal 然后在主线程中创建了一个新的线程 在新的线程中,尝试获取他们的值 从打印信息可以看得出来 对于ThreadLocal获取的值为...之前也说过了,就是创建这个线程线程,也就是平时说的父线程 所以说 借助于inheritableThreadLocals,可以实现,创建线程向被创建线程数据传递 看下下面的方法 逻辑很清晰,创建了一个...小结: Thread对象,通过内部的     ThreadLocal.ThreadLocalMap inheritableThreadLocals = null; 维护从父线程(创建该线程线程)...InheritableThreadLocal是 ThreadLocal的子类 在Thread内部通过维护    ThreadLocal.ThreadLocalMap inheritableThreadLocals 进行父子线程数据的传递...只不过从实现上、以及逻辑上,他继承了ThreadLocal而已,然后覆盖了几个方法 原文地址:InheritableThreadLocal类原理简介使用 父子线程传递数据详解 多线程中篇(十七)

    80130

    父子任务使用不当线程池死锁怎么解决?

    引言在Java多线程编程中,线程池是提高性能和资源利用率的常用工具。然而,当父子任务使用同一线程池时,可能导致潜在的死锁问题。...2的线程池, 然后向线程池提交任务, 这个任务直接调用outerTask, 这个outerTask不做任何事情, 只通过线程池异步调用innerTask, 但是注意这里使用了同一个线程池提交innerTask...outerTask提交任务的地方, 同时通过查看线程池的workQueue对象可以看到有很多任务堆积:原因分析子任务需要等待父任务完成,而父任务内部的子任务通过同一个线程池提交,又需要等待线程池有空闲线程才能得到执行...(在我的公司实际发生过这种故障,开发不停重启和扩容但过一段时间仍然会发生这个问题,排查了很长时间才发现问题原因)解决方案为避免父子任务使用同一线程池造成死锁,可以考虑使用独立线程池:将父任务和子任务分别提交到不同的线程池...,避免共享线程池资源,减少死锁的可能性。

    11010

    ThreadLocal 父子线程之间该如何传递数据?

    ~ ThreadLocal 的具体原理这篇文章就不解释了,能干啥大伙儿都倒背如流,其实就两点: 链路透传(通俗来说就是方便做参数传递,不用在调用方法时携带一堆请求参数) 线程隔离 每个线程都有自己的一个...ThreadLocalMap 都是不一样的 那如果子线程想要拿到父线程的中的 ThreadLocal 值怎么办呢?...在子线程中调用 get 时,我们拿到的 Thread 对象是当前子线程对象,对吧,每个线程都有自己独立的 ThreadLocal,那么当前子线程的 ThreadLocalMap 是 null 的(而父线程...InheritableThreadLocal 是怎么做到父子线程传值的。...和 value 都是原来的引用地址,这里所谓的 copy 其实就是把一个 Map 中的数据复制到另一个 Map 中: 至此,大致的解释了 InheritableThreadLocal 为什么能解决父子线程传递

    42030

    vue 父子组件通信

    父子组件通信 父子组件的访问方式: $children 有时候我们需要父组件直接访问子组件,子组件直接访问父组件,或者是子组件访问跟组件。...image.png 父子组件的访问方式: $refs $children的缺陷: 通过$children访问子组件时,是一个数组类型,访问其中的子组件必须通过索引值。...image.png 父子组件的访问方式: $parent 如果我们想在子组件中直接访问父组件,可以通过$parent 注意事项: 尽管在Vue开发中,我们允许通过$parent来访问父组件,但是在真实开发中尽量不要这样做...image.png 非父子组件通信 刚才我们讨论的都是父子组件间的通信,那如果是非父子关系呢? 非父子组件关系包括多个层级的组件,也包括兄弟组件的关系。

    36820

    vue父子组件通信以及非父子组件通信的方法

    一般来说,组件可以有以下几种关系,父子关系、兄弟关系和隔代关系,简化点可以分为父子关系和非父子关系,下面就讲讲vue父子组件通信以及非父子组件通信的方法。使用代码格式会比较乱,所以直接使用图片演示。...1.父子组件 (1).父组件数据传递给子组件 传递 注:这里的child-msg必须用-代替驼峰,否则识别不到方法 接收 方式1 注:接收-改成驼峰 方式2 注:这里可以指定传入的类型,如果类型不对...$emit中的 2.非父子 创建空的实例放在根组件下,所有的子组件都能调用 注:这个空的实例,所有的组件都能调用,父子、非父子都可以 传递方 接收方 以上讲的并非全部vue组件数据通信方法,只是我在项目中用到的总结归类...这样父传子、子传父和非父子组件数据传递就完成了。 获取更多优质内容,请关注【青年码农】 青年码农-获取更多.jpg

    1.6K1713
    领券