zoukankan      html  css  js  c++  java
  • 9.并发编程--ThreadLocal

    并发编程--ThreadLocal

    1. ThreadLocal :

    • * 线程局部变量,是一种多个线程间并发访问变量的解决方案。
    • * 与其使用synchronized等加锁的方式,ThreadLocal完成不提供锁,而是用空间换时间的手段,为每个线程提供变量的独立副本,以保证线程安全;
    • * 从性能上来说:ThreadLocal不具有绝对的优势,在并发并不是很高的情况下,加锁的性能会更好;但作为一套完全与锁无关的线程安全的解决方案,

    在高并发量或者竞争激励的场景,使用ThreadLocal可以在一定程度上减少锁竞争。
    示例:ConnThreadLocal.java

     1     public class ConnThreadLocal {
     2 
     3         public static ThreadLocal<String> th = new ThreadLocal<String>();
     4 
     5         public void setTh(String value){
     6           th.set(value);
     7         }
     8         public void getTh(){
     9           System.out.println(Thread.currentThread().getName() + ":" + this.th.get());
    10         }
    11 
    12         public static void main(String[] args) throws InterruptedException {
    13 
    14           final ConnThreadLocal ct = new ConnThreadLocal();
    15           Thread t1 = new Thread(new Runnable() {
    16             @Override
    17             public void run() {
    18               ct.setTh("张三");
    19               ct.getTh();
    20             }
    21           }, "t1");
    22 
    23           Thread t2 = new Thread(new Runnable() {
    24             @Override
    25             public void run() {
    26               try {
    27                 Thread.sleep(1000);
    28                 ct.getTh();
    29               } catch (InterruptedException e) {
    30                 e.printStackTrace();
    31               }
    32             }
    33           }, "t2");
    34 
    35           t1.start();
    36           t2.start();
    37         }
    38 
    39     }
  • 相关阅读:
    C博客作业00—我的第一篇博客
    C语言博客作业03函数
    C语言博客作业05指针
    快速分页:jsp标签pagertaglib
    JSP与Servlet的编解码
    初探Hibernate3源码读取配置文件
    截取图片的某个部分(C#源代码)
    使用MATLAB获取视频中每一帧的图像
    Windows下较为精确的计时方法
    [转]向Windows Phone 7手机部署应用程序
  • 原文地址:https://www.cnblogs.com/Mao-admin/p/9988943.html
Copyright © 2011-2022 走看看