博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ThreadLocal
阅读量:5894 次
发布时间:2019-06-19

本文共 1462 字,大约阅读时间需要 4 分钟。

hot3.png

ThreadLocal是什么?

1.ThreadLocal用来解决多线程程序的并发问题

2.ThreadLocal并不是一个Thread,而是Thread的局部变量,当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每个线程都
可以独立地改变自己的副本,而不会影响其它线程所对应的副本.
3.从线程的角度看,目标变量就象是线程的本地变量,这也是类名中“Local”所要表达的意思。

API

   void set(T value)

          将此线程局部变量的当前线程副本中的值设置为指定值
    void remove()
          移除此线程局部变量当前线程的值
    protected T initialValue()
          返回此线程局部变量的当前线程的“初始值”
    T ()
          返回此线程局部变量的当前线程副本中的值

 

小例子

 

package com.shekhargulati.threadLocal;/** * Created by Administrator on 2016/9/2. */public class SequenceNumber {    private static ThreadLocal
seqNum = new ThreadLocal
() { public Integer initialValue() { return 0; } }; public int getNextNum(){ seqNum.set(seqNum.get()+1); return seqNum.get(); } public static void main(String[] args){ SequenceNumber sn = new SequenceNumber(); TestClient t1 = new TestClient(sn); TestClient t2 = new TestClient(sn); TestClient t3 = new TestClient(sn); t1.start(); t2.start(); t3.start(); } private static class TestClient extends Thread { private SequenceNumber sn; public TestClient(SequenceNumber sn){ this.sn = sn; } public void run(){ for(int i=0;i<3;i++){ System.out.println("thread["+Thread.currentThread().getName() +"]sn["+sn.getNextNum()+"]"); } } }}

转载于:https://my.oschina.net/u/2474041/blog/741611

你可能感兴趣的文章
VMware VIX API使用教程
查看>>
软件包安装(yum配置)
查看>>
dedecms调用相关文章dede:likearticle
查看>>
Ganglia监控Hadoop及Hbase集群性能(安装配置)
查看>>
nginx之location配置详解及案例
查看>>
我的友情链接
查看>>
oracle 11g rac 监听程序offline
查看>>
网络请求
查看>>
linux文件查找命令之 find用法
查看>>
The Shared folder with you
查看>>
Apache Storm 集群环境搭建
查看>>
Android OpenGL 2.1 即时音效
查看>>
传统企业天天喊转型,究竟该怎么转
查看>>
fail2ban+nginx
查看>>
我的友情链接
查看>>
这个时代,生涯管理意识有多重要!
查看>>
Elasticsearch集群的安装
查看>>
Windows 8在任务栏显示计算机按钮
查看>>
Servlet+JSP+MySQL实现用户管理模块之七、实现用户信息更新和重置密码
查看>>
动态规划本质理解:01背包问题
查看>>