`
nickevin
  • 浏览: 38466 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ThreadLocal in Java

阅读更多

I have read source code and review some posts at JavaEye. So write a bit idea here.



  • ThreadLocal relation with Thread.
  • How to store resources for each Thread  separately.

public class Thread implements Runnable {


    /* ThreadLocal values pertaining to this thread. This map is maintained
	 * by the ThreadLocal class. */
	ThreadLocal.ThreadLocalMap threadLocals = null;


} 


public class ThreadLocal<T> {

    public T get() {
		Thread t = Thread.currentThread();
		ThreadLocalMap map = getMap(t);
		if (map != null) {
			return (T) map.get(this);
		}

		// Maps are constructed lazily.  if the map for this thread
		// doesn't exist, create it, with this ThreadLocal and its
		// initial value as its only entry.
		T value = initialValue();
		createMap(t, value);
		return value;
	}


    /**
	 * Sets the current thread's copy of this thread-local variable
	 * to the specified value.  Many applications will have no need for
	 * this functionality, relying solely on the {@link #initialValue}
	 * method to set the values of thread-locals.
	 *
	 * @param value the value to be stored in the current threads' copy of
	 *        this thread-local.
	 */
	public void set(T value) {
		Thread t = Thread.currentThread();
		ThreadLocalMap map = getMap(t);
		if (map != null) {
// each Thread owns a  ThreadLocalMap, and the map just store only one value.
                        map.set(this, value);  
                }
                 else {
			createMap(t, value);
		}
	}


     /**
	 * Get the map associated with a ThreadLocal. Overridden in
	 * InheritableThreadLocal.
	 *
	 * @param  t the current thread
	 * @return the map
	 */
	ThreadLocalMap getMap(Thread t) {
		return t.threadLocals;
	}

}
   
 
See more @ http://www.iteye.com/topic/103804

 

 

–end–


分享到:
评论

相关推荐

    实现增强多线程命令.rar

    7. **线程局部存储**:线程局部变量(ThreadLocal in Java)可以为每个线程维护独立的副本,避免在多线程环境中使用全局变量可能引发的问题。 8. **异常处理**:在多线程环境中,应确保每个线程都有适当的异常处理...

    The Thinking in Java Annotated Solution Guide

    4. **多线程**:Java提供了丰富的多线程支持,如Thread类、Runnable接口、synchronized关键字、volatile、ThreadLocal等。掌握多线程编程,可以编写并发、高效的应用程序。 5. **输入输出流**:Java的I/O流系统允许...

    Thinking in Java知识点总结

    《Thinking in Java》是 Bruce Eckel 的经典著作,其中第21章主要讲解了Java中的并发编程知识。并发编程是让程序在多个线程中同时执行任务,以提高程序的效率和响应性。以下是该章节的重点知识点: 1. **并发的多面...

    thinking in java(中英文版pdf)

    《Thinking in Java》是Bruce Eckel的经典之作,它是一本深度和广度并重的Java编程教程,适合从初学者到高级开发者的各个层次。这本书以其深入浅出的讲解方式和丰富的实例,深受全球程序员的喜爱。中英文双语版更是...

    thinking-in-java_java_in_ThinkinginJava_

    《Thinking in Java》是Bruce Eckel的经典之作,它深度探讨了Java编程语言的各个方面,是许多Java程序员必备的参考书籍。这本书以其详尽的解释、丰富的示例和深入的理论见解,深受全球开发者喜爱。"java in Thinking...

    Java并发编程:设计原则与模式(Concurrent.Programming.in.Java)(中英版)

    7. **线程局部变量模式**:每个线程拥有独立的变量副本,避免了线程间的数据共享,`ThreadLocal`类提供此功能。 书中还涉及了其他重要主题,如线程通信、线程池的最佳实践、内存模型和可见性、原子变量、并发集合等...

    Thinking in Java 3

    《Thinking in Java 3》是Java编程领域里一本极具影响力的著作,由Bruce Eckel撰写。这本书深入浅出地讲解了Java编程语言的核心概念和技术,帮助读者建立起坚实的基础,并引导他们以面向对象的思维方式来思考问题。...

    thinking in java 4RD 课后习题答案以及PDF

    6. **多线程**:Java提供了丰富的API来支持多线程编程,包括Thread类、Runnable接口、synchronized关键字、volatile和ThreadLocal等。 7. **输入/输出流**:理解I/O流的基本概念,包括字节流、字符流、缓冲流、对象...

    thinking in java (第三版)

    7. **多线程**:Java提供内置的多线程支持,书中会讲解线程的创建、同步和通信,以及ThreadLocal、ExecutorService等高级话题。 8. **输入/输出流**:Java的I/O系统是处理文件和网络通信的关键,包括文件流、字符流...

    Thinking in Java, 2nd edition

    《Thinking in Java》是Bruce Eckel的经典之作,第二版对初学者和经验丰富的开发者都具有极高的价值。这本书深入浅出地介绍了Java编程语言的核心概念和技术,帮助读者建立起扎实的面向对象编程思想。 1. 面向对象...

    Thinking in Java

    5. **多线程**:讲解了Java中的并发编程,包括线程的创建、同步机制(如synchronized关键字、wait()和notify()方法)以及高级特性如ThreadLocal。 6. **输入/输出系统**:讨论了Java的I/O流,包括文件操作、序列化...

    java_concurrency_in_practice_source源代码

    这里的"java_concurrency_in_practice_source"源代码正是书中实例的实现,它涵盖了Java多线程编程中的关键概念和技术。 1. **线程基础**:Java中创建线程有两种方式,一是通过`Thread`类的子类,二是实现`Runnable`...

    Java Concurrency in Practice.zip

    《Java Concurrency in Practice》是Java并发编程领域的一本经典著作,由Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowles和Doug Lea等专家共同编写。这本书深入探讨了Java平台上的多线程和并发编程,旨在...

    Thinking.In.Java.Third.Edition.CHS.zip

    《Thinking in Java》是 Bruce Eckel 的经典编程著作,第三版中文版的压缩包 "Thinking.In.Java.Third.Edition.CHS.zip" 提供了这本书的中文电子版资源。这本书是许多程序员入门Java语言的重要参考书,它深入浅出地...

    Thingking in java

    4. **多线程**:详细阐述了Java中的线程概念,包括线程的创建、同步、互斥和死锁,以及ThreadLocal、ExecutorService和并发工具类的使用。 5. **输入/输出和流**:探讨了Java的I/O系统,包括字节流、字符流、对象...

    3_Java_Concurrency_in_Practice_proglib_java_practice_

    7. **线程局部变量**:`ThreadLocal`用于创建线程私有的变量,可以避免数据共享导致的问题。 8. **异常处理**:在并发环境下,异常处理策略需要特别注意,以防止线程被意外中断或异常传播导致系统不稳定。 9. **...

    Java Concurrency in Practice Java并发编程

    《Java Concurrency in Practice》是Java并发编程领域的一本权威著作,由Brian Goetz、Tim Peierls、Joshua Bloch、David Holmes和Doug Lea等多位Java并发领域的专家共同编写。这本书深入探讨了Java平台上的多线程和...

    Java Concurrency in Practice CHM版本

    8. **线程局部变量**:ThreadLocal是Java提供的一个类,它允许每个线程拥有自己独立的变量副本,避免了线程间的数据共享和同步问题。 9. **异常处理**:在多线程环境中,异常处理是必须考虑的问题。书中会讨论如何...

    All Algorithms implemented in Java(3).zip

    "All Algorithms implemented in Java(3).zip" 提供的是一份包含多种算法实现的Java代码库,对于学习和理解算法有着极高的价值。这个压缩包中的"Java-master"文件夹很可能包含了不同分类的算法实现,如排序、搜索、...

Global site tag (gtag.js) - Google Analytics