转载

Java调用链跟踪关键技术(三)线程变量

一、Java类成员作用域

JAVA类成员作用域参考下图:

Java调用链跟踪关键技术(三)线程变量

  1. Java虚拟机级作用域,通过在类成员变量前加static关键字修饰实现在整个Java虚拟机中共享。
  2. 类实例级作用域,成员变量前不加static关键字修饰则可,如图中Class A、Class B、Class C的成员变量,只在类实例中共享。
  3. 除了以上级别的成员变量共享,在调用链跟踪时要能识别不同分层下的多个类实例的调用是同一个请求,而这个请求的调用都在一个独立线程内完成,此时就要用到线程级变量共享。

二、实现线程变量共享

在Java中可以通过ThreadLocal实现线程变量共享,即便不需要跟踪调用链,仅仅是跟踪SQL调用的数据流也是非常有用。

ThreadLocal的使用可以参考这篇文章: https://www.jianshu.com/p/4e1...

end.

加入《Java栈实战营》知识星球,参与讨论,更多实战代码分享,不就是几斤苹果,几个荣耀道具的事吗!

Java调用链跟踪关键技术(三)线程变量

https://t.zsxq.com/RNzfi2j
原文  https://segmentfault.com/a/1190000019966429
正文到此结束
Loading...