线程局部变量

ThreadLocal,线程局部变量,不提供锁,不做线程共享,而是为每个线程提供变量的独立副本。

import java.util.concurrent.*;
public class TestThreadLocal {public static void main(String[] args) throws InterruptedException {ExecutorService es = Executors.newCachedThreadPool();es.submit(new MyThread(1));es.submit(new MyThread(2));es.shutdown();System.out.println("END");}
}
class MyThread implements Runnable {public static Long VAR = 0L;public static ThreadLocal<Long> VAR_LOCAL = new ThreadLocal<Long>();private long num;public MyThread(long num) {this.num = num;}@Overridepublic void run() {for (int i = 0; i < 700; i++) {// 将参数放入静态变量中存储VAR = num;// 普通静态变量VAR_LOCAL.set(num);// 线程局部变量if (VAR_LOCAL.get() != num) {// 线程局部变量:每个线程有变量的独立副本,保障线程安全。这句话不会输出。System.out.println("VAR_LOCAL:" + VAR_LOCAL.get());}if (VAR != num) {// 普通静态变量:线程不安全,这句话会输出System.out.println("VAR:" + VAR);}}}
}

转载于:https://www.cnblogs.com/tigerlion/p/11180477.html

Java基础教程——线程局部变量相关推荐

  1. Java基础教程-10-多线程

    Java基础教程-10-多线程 1. 多线程 我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计? 要解决上述问题,咱们得使用多进程或 ...

  2. (CZ深入浅出Java基础)线程笔记

    这是刘意老师的JAVA基础教程的笔记 讲的贼好,附上传送门 传智风清扬-超全面的Java基础 一.线程的引入 1.多线程概述 进程 a.正在运行的程序,是系统进行资源分类和调用的独立单位. b.每个进 ...

  3. Java基础教程:多线程基础(3)——阻塞队列

    Java基础教程:多线程基础(3)--阻塞队列 快速开始 引入问题 生产者消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生产数据,而消费者取走数据. 模 ...

  4. Java基础教程:Lambda表达式

    Java基础教程:Lambda表达式 引入Lambda Java 是一流的面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,即使数组也是一种对象,每个类创建的实例也是对象.在 Java ...

  5. Java基础教程:注解

    Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...

  6. Java基础教程-刘刚-专题视频课程

    Java基础教程-2704人已学习 课程介绍         Java基础教程是一套入门Java开发语言的课程,它是由浅入深的介绍Java基础内容,包括Java介绍.基本类型及运算符.控制执行流程.字 ...

  7. java基础教程(一)

    Java 开发环境配置 在进行Java开发之前,需要先安装Java开发工具包(JDK)和集成开发环境(IDE).以下是Java开发环境的配置和搭建步骤: 下载JDK:访问Oracle官方网站,选择适合 ...

  8. Java基础教程-05-面向对象

    Java基础教程-05-面向对象 1. 面向过程和面向对象解释 1.1 面向过程 1.1.1 简述 我们回想一下, 前面我们完成一个需求的步骤是怎样的? 首先是搞清楚我们要做什么. 然后在分析怎么做. ...

  9. Java基础教程:反射基础

    Java基础教程:反射基础 引入反射 反射是什么 能够动态分析类能力的程序称为反射. 反射是一种很强大且复杂的机制. Class类 在程序运行期间,Java运行时系统始终为所有对象维护一个被称为运行时 ...

  10. Java基础教程:面向对象编程[2]

    Java基础教程:面向对象编程[2] 内容大纲 访问修饰符 四种访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default ...

最新文章

  1. oracle12测试骤,Oracle中SQL语句解析的步骤
  2. MySQL5.6.35数据库多实例二进制安装
  3. SP4062电路接口芯片保护IC
  4. java mapreduce 实例_MapReduce -- JAVA 实例(一)计算总数
  5. metasploitable2渗透测试
  6. centos安装redis并客户端连接_Linux(Centos)之安装Redis及注意事项
  7. Linux系统下强制踢掉登录用户
  8. 错误处理和调试2 - C++快速入门31
  9. 每周全球科技十大新闻(2019.8.12-8.18)
  10. t检验临界值表中的n是什么_t检验(t-test)临界值表
  11. 线上问题处理1---CPU飙高问题定位
  12. 什么是世界协调时间UTC
  13. 如何重置Mac的蓝牙模块以解决连接问题
  14. 混合模式程序集是针对“v1.1.4322”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。
  15. 3名院士被处理,院士改革确实动真格了!
  16. 在MySQL中 NULL的含义是_mysql null的含义是什么
  17. coco数据集(yoloV5格式)中生成子类数据集
  18. 锤粉往事:有人早已失望离开,有人还不想说再见
  19. 【QT】C++ GUI Qt4 学习笔记3
  20. 微信小程序自定义表格样式

热门文章

  1. 【Hoxton.SR1版本】Spring Cloud Stream消息驱动
  2. POI操作Excel表格相关API说明
  3. Java集合Collection之实现原理解读(HashSet)
  4. Spring Cloud Zuul路由网关(学习总结)
  5. 辞职的新方式:一言不合就消失!
  6. Coding and Paper Letter(四十八)
  7. 澜起科技加速中国本土数据中心解决方案进程
  8. 创建额外域控制器Active Directory(二)
  9. 一个类windows系统的效果图
  10. redux-chunk中间件的安装和使用-(二)