3.4.1在子线程中取父线程的值(InheritableThreadLocal)
来源:互联网 发布:deepin15 linux 教程 编辑:程序博客网 时间:2024/05/29 18:09
package demo;import java.util.Date;/** * Created by sunyifeng on 17/10/18. */public class InheritableThreadLocalExt extends InheritableThreadLocal { @Override protected Object initialValue() { return new Date().getTime(); } @Override protected Object childValue(Object parentValue) { return parentValue + "我在子线程中加的"; }}
package demo;/** * Created by sunyifeng on 17/10/18. */public class Tools { public static InheritableThreadLocalExt inheritableThreadLocalExt = new InheritableThreadLocalExt();}
package demo;/** * Created by sunyifeng on 17/10/18. */public class MyThread extends Thread { @Override public void run() { try { for (int i = 0; i < 10; i++) { System.out.println("在线程A中取值=" + Tools.inheritableThreadLocalExt.get()); Thread.sleep(100); } } catch (InterruptedException e) { e.printStackTrace(); } }}
package demo;/** * Created by sunyifeng on 17/10/18. */public class Run { public static void main(String[] args) { try { for (int i = 0; i < 10; i++) { System.out.println("在main线程中取值=" + Tools.inheritableThreadLocalExt.get()); Thread.sleep(100); } Thread.sleep(5000); MyThread myThread = new MyThread(); myThread.start(); } catch (InterruptedException e) { e.printStackTrace(); } }}
运行结果:在main线程中取值=1508261472693
在main线程中取值=1508261472693
在main线程中取值=1508261472693
在main线程中取值=1508261472693
在main线程中取值=1508261472693
在main线程中取值=1508261472693
在main线程中取值=1508261472693
在main线程中取值=1508261472693
在main线程中取值=1508261472693
在main线程中取值=1508261472693
在线程A中取值=1508261472693我在子线程中加的
在线程A中取值=1508261472693我在子线程中加的
在线程A中取值=1508261472693我在子线程中加的
在线程A中取值=1508261472693我在子线程中加的
在线程A中取值=1508261472693我在子线程中加的
在线程A中取值=1508261472693我在子线程中加的
在线程A中取值=1508261472693我在子线程中加的
在线程A中取值=1508261472693我在子线程中加的
在线程A中取值=1508261472693我在子线程中加的
在线程A中取值=1508261472693我在子线程中加的
程序分析:
1、子线程可以通过继承取父类的值,通过InheritableThreadLocal实行;
2、如果主线程更改InheritableThreadLocal的值,子线程还是取原来的值。
阅读全文
0 0
- 3.4.1在子线程中取父线程的值(InheritableThreadLocal)
- java线程之InheritableThreadLocal
- java线程之InheritableThreadLocal
- 在子线程(非UI线程)中修改一个控件的值
- 在子线程(非UI线程)中修改一个控件的值
- Java多线程之通过管道线程间通信(字节流、字符流),类ThreadLocal与类InheritableThreadLocal的使用
- 多线程开发(1):主线程,前台线程,后台线程,守护线程,子线程,托管线程的关系
- 在子线程中创建线程的方法
- 在子线程中创建线程的方法
- 在Service创建子线程的好处
- Java多线程编程3--线程间通信--类ThreadLocal与类InheritableThreadLocal的使用
- 在子线程中操作主线程
- Rust: 在子线程启动子线程
- 子线程的认识
- 在子线程中Toast
- 在子线程中Toast
- 在子线程更新UI
- GUI(主)线程与子线程之间的通信
- 《运营之光》-- 学习笔记(四)
- 计算机组成原理:机器字长 存储字长 指令字长 数据字长
- 学习的知识点-有关计算机网络安全方面的
- switch语句171017(2)
- IDEA创建maven项目 整合SSM框架
- 3.4.1在子线程中取父线程的值(InheritableThreadLocal)
- Openmp中的数据处理子句
- ubuntu 16.04 OpenCV 2.4.13:在不同的线程中调用imshow失败
- 文本编辑器vi/vim
- 网易2017秋招编程题 买苹果
- Github上传代码菜鸟超详细教程
- hello csdn
- 把知乎丁香医生的文章及回答转pdf
- Android 开发之 Gradle那些事儿(三)