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

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

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

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

ThreadLocal父子线程数据传递方案

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

1.4K30

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

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

4.7K41

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

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

74230

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

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

32830

vue 父子组件通信

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

34820

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

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

1.6K1713

Elasticsearch学习-父子文档

本文以Elasticsearch 6.8.4版本为例,介绍Elasticsearch父子文档的使用。...1、父子文档 父子文档在理解上来说,可以理解为一个关联查询,有些类似MySQL中的JOIN查询,通过某个字段关系来关联。...父子文档与嵌套文档主要的区别在于,父子文档的父对象和子对象都是独立的文档,而嵌套文档中都在同一个文档中存储,如下图所示: [image] 这里引用官网的话,对比嵌套文档来说,父-子关系的主要优势有: 更新父文档时...1.4 使用建议 父子文档都可以独立返回,对于某些场景很适用,比如主表信息是一些基本不变的数据,而子表信息经常增删改,并且子表信息经常有查询场景,这样就很适合使用父子文档。...父子文档查询效率相对嵌套文档较低,官网说是5-10倍左右。

1.5K10

angular框架如何实现父子组件传值、非父子组件传值

文章目录 1.理解父子组件、非父子组件 2.父组件给子组件传值- -@input 3.父组件通过@ViewChild主动获取子组件的数据和方法 4.非父子组件如何传递数据 1.理解父子组件、非父子组件...什么是父子组件?...组件的父子关系是相对来说的,即在一个A组件中嵌入了B组件,那么在这一层关系中,A组件是B组件的父组件,B组件是A组件的子组件。...看下面两幅图即可理解: app.component.html与普通组件的关系: 普通组件与普通组件: 现在应该知道父子组件是什么关系了,关键看谁嵌入了谁那里。...4.非父子组件如何传递数据 现在我知道的有三种方法: cookie:只要在一个组件的ts文件中设置了cookie,则其他组件也可以读取cookie的键值对。

1.5K20
领券