首页 > 其他分享 >ThreadLocal: 线程独享

ThreadLocal: 线程独享

时间:2023-02-08 11:35:28浏览次数:39  
标签:Thread void 独享 ThreadLocal 线程 new public


ThreadLocal线程局部变量

ThreadLocal是使用空间换时间,synchronized是使用时间换空间

比如在hibernate中session就存在与ThreadLocal中,避免synchronized的使用


package com.mo;

public class Test6 {

//所有线程共享
static volatile Person p = new Person();
//每个线程独享
static ThreadLocal<Person> tl = new ThreadLocal<Person>();

public static void main(String[] args) {
/*new Thread() {
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
p.name = "lisi";

}
}.start();
new Thread() {
public void run() {
try {
Thread.sleep(2000);
System.out.println(p.name);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}.start();*/

new Thread() {
public void run() {
tl.set(new Person());
System.out.println("第一个 线程" + tl.get());
}
}.start();

new Thread() {
public void run() {
//第二个线程无法取到第一个set进去的对象,是每个线程独享的
System.out.println("第二个 线程" + tl.get());
}
}.start();
}

}
class Person {
String name = "zhangsan";
}


运行结果

第一个 线程com.mo.Person@459189e1
第二个 线程null



标签:Thread,void,独享,ThreadLocal,线程,new,public
From: https://blog.51cto.com/u_12182769/6043793

相关文章

  • 线程问题<2>
    面试题:写一个固定容量同步容器,拥有put和get方法,以及getCount方法能够支持2个生产者线程以及10个消费者线程的阻塞调用1.使用wait和notify/notifyAll来实现publicclassTest......
  • 线程问题<1>
    实现一个容器,提供两个方法,add,size写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束1.第一种方法是......
  • java多线程编程核心技术(1丶2章)
    java多线程编程第一章:实现多线程编程主要有两种方式,一种是继承Thread类,另一种是实现Runnable接口。使用继承Thread类的方式创建新线程时,最大的......
  • java创建线程的方式有几种?
    java中创建线程的方式有多少种,这个问题也是众多纷纭,这个时候更应该参考官方文档(https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html)了,文档很明确地指出......
  • python 的多线程
    创建一个多线程fromthreadingimportThread,ThreadErrorimporttimedeftask_01():print("开始发送邮件")time.sleep(1)print("邮件发送成功")i......
  • Spring框架中的单例Bean是线程安全的么?
    Spring中的Bean默认是单例模式的,框架并没有对bean进行多线程的封装。所以单例bean是线程不安全的。如果Bean是有状态的(有状态即有数据存储功能),则需要我们自己来保证线程安......
  • Linux下线程编程(1)
    1.线程简介  线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可......
  • python多线程的问题
    参考:https://stackoverflow.com/questions/20939299/does-python-support-multithreading-can-it-speed-up-execution-timeGIL不会阻止线程。GIL所做的只是确保一次只......
  • 单线程架构的Redis如此之快的 4 个原因
    前言作为内存中数据存储,Redis以其速度和性能着称,通常被用作大多数后端服务的缓存解决方案。但是,在内部,Redis采用单线程架构。为什么单线程设计依然会有这么高的性能?如......
  • Java线程
    Java线程是程序过程中的一个线程实体。JVM允许一个应用并发执行多个线程。HotSpotJVM中的Java线程与原生操作系统线程有直接的映射关系。当线程本地存储、缓冲区分配、同步......