`
hy2012_campus
  • 浏览: 29186 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

ThreadLocal变量

    博客分类:
  • java
 
阅读更多
/**
 * ThreadLocal和线程同步机制都是为了解决多线程中相同变量的访问冲突问题。 
 * ThreadLocal为每一个线程提供一个独立的变量副本,从而隔离了多个线程对访问数据的冲突。
 */
public class SequenceNumber {
    
    //①通过匿名内部类覆盖ThreadLocal的initialValue()方法,指定初始值
	private static ThreadLocal<Integer> seqNum = new ThreadLocal<Integer>(){
		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();
	     //③ 3个线程共享sn,各自产生序列号
	     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(){
	        //④每个线程打出3个序列值
			for (int i = 0; i < 3; i++) {
				System.out.println("thread["+Thread.currentThread().getName()+"] sn["+sn.getNextNum()+"]");
			}
		}
	}
}

 

分享到:
评论

相关推荐

    Java并发编实践之ThreadLocal变量.doc

    Java并发编实践之ThreadLocal变量.doc

    java ThreadLocal多线程专属的变量源码

    java ThreadLocal多线程专属的变量源码java ThreadLocal多线程专属的变量源码java ThreadLocal多线程专属的变量源码java ThreadLocal多线程专属的变量源码java ThreadLocal多线程专属的变量源码java ThreadLocal多...

    对ThreadLocal的理解【源码分析+应用举例】

    ThreadLocal是JDK包提供的,它提供了线程本地变量,也就是如果你创建了一个ThreadLocal变量,那么访问这个变量的每一个线程都会有这个变量的一个本地副本。当多线程操作这个变量时,实际操作的就是自己本地内存里面...

    ThreadLocal 线程本地变量 及 源码分析.rar_开发_设计

    ThreadLocal 线程微本地变量 及 源码分析

    mycat多租户解决方案二

    - ThreadLocal变量的巧妙使用,与Hibernate的事务管理器一样的机制,线程的一个ThreadLocal变量中保留当前线程涉及到的数据库连接、事务状态等信息,当Service的某个事务托管的业务方法被调用时,Hibernate自动完成...

    read-only-cypher

    TransactionEventHandler 检查布尔 ThreadLocal 变量。 根据这一点,检查 TransactionData 是否有任何写入。 如果找到,则抛出异常以否决提交此事务。 当 Neo4j 作为服务器运行时,缺少另一部分。 我们不知何故...

    ThreadLocal详解及说明

    关于线程变量ThreadLocal的介绍以及说明. 关于线程变量ThreadLocal的介绍以及说明. 关于线程变量ThreadLocal的介绍以及说明. 关于线程变量ThreadLocal的介绍以及说明. 关于线程变量ThreadLocal的介绍以及说明. ...

    java事务 - threadlocal

    ThreadLocal保证一个类的实例变量在各个线程中都有一份单独的拷贝, 从而不会影响其他线程中的实例变量

    Java并发编程实践

    2.6. ThreadLocal变量............................................................................................................15 2.7. 高级并发对象.......................................................

    Java中的线程同步与ThreadLocal无锁化线程封闭实现

    主要介绍了Java中的线程同步与ThreadLocal无锁化线程封闭实现,Synchronized关键字与ThreadLocal变量的使用是Java中线程控制的基础,需要的朋友可以参考下

    SecHeaders:这是一个完全可配置的,基于规则的插件,用于建立内容安全策略,生成NONCE并设置JSPServlet引擎所需的所有安全HTTP标头

    可以通过ThreadLocal变量或作为请求参数生成NONCE,并将其用于您自己的代码。 NONCE的长度是配置,并使用SecureRandom。 SHA哈希可以通过使用strict-dymamic和script-src的方式从单独的文件添加到CSP中。 可以...

    multi-tenant-app-demo:使用Spring Boot和Hibernate 5演示基于鉴别字段(共享模式)的多租户应用程序

    每个请求都经过一个自定义的servlet过滤器,该过滤器检查X-TenantID http标头,并使用TenantContext类在ThreadLocal变量中对其进行TenantContext 。 如果请求中不存在http标头,则它将被拒绝。 控制器将请求路由到...

    理解threadlocal

    ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序,ThreadLocal并不是一个Thread,而是Thread的局部变量

    java线程本地变量ThreadLocal详解

    ThreadLocal则为每一个线程提供了一个变量副本,从而隔离了多个线程访问数据的冲突,ThreadLocal提供了线程安全的对象封装,下面我们就来详细了解一下吧

    JenkovTutorial:这是http上Jenkov教程的练习示例

    (带有ThreadLocal变量的示例)。 线程信令。 (带有4个不同的MyWaitNotify对象的2个示例)。 锁具4.1。 基本(带有2个不同的Counter对象的示例)。 4.2。 可重入(例如2个不同的可重入对象)。 Java中的读/写锁。 ...

    Hibernate用ThreadLocal模式(线程局部变量模式)管理Session

    今天小编就为大家分享一篇关于Hibernate用ThreadLocal模式(线程局部变量模式)管理Session,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    JAVA ThreadLocal类深入

    深入研究java.lang.ThreadLocal类。ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是 threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。

    谈谈Java中的ThreadLocal

     ThreadLocal一般称为线程本地变量,它是一种特殊的线程绑定机制,将变量与线程绑定在一起,为每一个线程维护一个独立的变量副本。通过ThreadLocal可以将对象的可见范围限制在同一个线程内。  跳出误区  需要...

    Java多线程编程之ThreadLocal线程范围内的共享变量

    主要介绍了Java多线程编程之ThreadLocal线程范围内的共享变量,本文讲解了ThreadLocal的作用和目的、ThreadLocal的应用场景、ThreadLocal的使用实例等,需要的朋友可以参考下

    8个案例详解教会你ThreadLocal.docx

    通常情况下,我们创建的成员变量都是线程不安全的。因为他可能被多个线程同时修改,此变量对于多...而使用ThreadLocal创建的变量只能被当前线程访问,其他线程无法访问和修改。也就是说:将线程公有化变成线程私有化。

Global site tag (gtag.js) - Google Analytics