Laughing
java多线程之ThreadLocal类
06/06
本文最后更新于2024年03月18日,已超过186天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
ThreadLocal
是⼀个本地线程副本变量⼯具类。内部是⼀个弱引⽤的Map
来维护。这⾥不详细介绍它的原理,⽽是只是介绍它的使⽤,以后有独⽴章节来介绍ThreadLocal
类的原理。
有些朋友称ThreadLocal
为线程本地变量或线程本地存储。严格来说,ThreadLocal
类并不属于多线程间的通信,⽽是让每个线程有⾃⼰”独⽴“的变量,线程之间互不影响。它为每个线程都创建⼀个副本,每个线程可以访问⾃⼰内部的副本变量。ThreadLocal
类最常⽤的就是set
⽅法和get
⽅法。
package com.company;
public class ThreadLocalDemo {
static class ThreadA implements Runnable{
private final ThreadLocal<String> threadLocal;
public ThreadA(ThreadLocal<String> threadLocal){
this.threadLocal=threadLocal;
}
@Override
public void run() {
threadLocal.set("A");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("ThreadA输出:" + threadLocal.get());
}
}
static class ThreadB implements Runnable{
private final ThreadLocal<String> threadLocal;
public ThreadB(ThreadLocal<String> threadLocal){
this.threadLocal=threadLocal;
}
@Override
public void run() {
threadLocal.set("B");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("ThreadB输出:" + threadLocal.get());
}
}
public static void main(String[] args){
ThreadLocal<String> threadLocal = new ThreadLocal<>();
new Thread(new ThreadA(threadLocal)).start();
new Thread(new ThreadB(threadLocal)).start();
}
}
版权属于:
香草物语
本文链接:
https://www.xiangcaowuyu.net/java/threadlocal-class-of-java-multithread.html(转载时请注明本文出处及文章链接)
作品采用:
感谢分享