java-Thread笔记

简介: java-Thread笔记

生命周期

线程流转.png

相关方法

interrupt():实例方法将线程中断标识设置为true,如线程在wait/sleep则报java.lang.InterruptedException

interrupted():静态方法,Thread.interrupted()重置当前线程中断标识

isInterrupted(): 实例方法获取当前线程中断标识

join():中断当前线程,等待调用线程结束后再执行

Thread.sleep(millis):当前线程休眠x毫秒,不释放持有锁

LockSupport.park():中断当前线程,不释放持有锁

Object.wait(millis):当前线程等待x秒,不传递则无限期等待,释放持有锁

线程变量

ThreadLocal:同线程内共享,无法传递至子线程

生命周期:在设置第一个值时通过Thread.currentThread()与当前线程中threadLocals进行关联,并初始化一个ThreadLocalMap进行存储。

ThreadLocalMap中存储内容的Entry使用的是WeakReference弱引用,便于垃圾回收。

  • 在非线程池情况下由于key为弱引用在代码中没有继续使用时(强引用去掉后只剩弱引用),会被gc回收.get方法会清理不存在的key对应的value,保障了内存回收
  • 在线程池中使用时由于线程不会被回收,Thread这个强引用不会被清理,所以存在内存溢出风险。 可在使用完成之后通过remove方法清理来规避这个隐患。
  • 使用static初始化时也存在生命周期过长存在内存溢出隐患

InheritableThreadLocal:只有在创建线程池时会初始化,所以线程池场景会导致赋值逻辑混乱

重写了childValue(),getMap(Thread),createMap(Thread t, T firstValue) 来实现子线程的内容赋值

ThreadLocal/InheritableThreadLocal 使用流程:

ThreadLocal,InheritableThreadLocal调用流程.png


TransmittableThreadLocal:可传递至子线程,子线程独立操作,新开线程也会获取新的值,需配合TtlRunnable或修改java启动参数来使用

整个过程的官方完整时序图:

TransmittableThreadLocal调用流程.png

依据官方时序图自己的整理:

TransmittableThreadLocal调用流程-M.png

目录
相关文章
|
11天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
5天前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
|
8天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
本系列教程笔记详细讲解了Kotlin语法,适合希望深入了解Kotlin的开发者。对于需要快速学习Kotlin的小伙伴,推荐查看“简洁”系列教程。本篇笔记重点介绍了Kotlin与Java混编的技巧,包括代码转换、类调用、ProGuard问题、Android库开发建议以及相互调用时的注意事项。
14 3
|
1月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
307 37
|
10天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
18 3
|
11天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
18天前
|
JSON Java 数据库
java 常用注解大全、注解笔记
关于Java常用注解的大全和笔记,涵盖了实体类、JSON处理、HTTP请求映射等多个方面的注解使用。
30 0
java 常用注解大全、注解笔记
|
1月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑】设计模式——原型模式
对比原型模式和传统方式的实现思路、代码方案、优缺点,阐述原型模式的使用场景,以及深拷贝、浅拷贝等相关概念,并扩展原型模式在Spring源码中的应用。
【Java笔记+踩坑】设计模式——原型模式
|
9天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(2)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(2)
|
9天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(1)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(1)