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–
分享到:
相关推荐
7. **线程局部存储**:线程局部变量(ThreadLocal in Java)可以为每个线程维护独立的副本,避免在多线程环境中使用全局变量可能引发的问题。 8. **异常处理**:在多线程环境中,应确保每个线程都有适当的异常处理...
4. **多线程**:Java提供了丰富的多线程支持,如Thread类、Runnable接口、synchronized关键字、volatile、ThreadLocal等。掌握多线程编程,可以编写并发、高效的应用程序。 5. **输入输出流**:Java的I/O流系统允许...
《Thinking in Java》是 Bruce Eckel 的经典著作,其中第21章主要讲解了Java中的并发编程知识。并发编程是让程序在多个线程中同时执行任务,以提高程序的效率和响应性。以下是该章节的重点知识点: 1. **并发的多面...
《Thinking in Java》是Bruce Eckel的经典之作,它是一本深度和广度并重的Java编程教程,适合从初学者到高级开发者的各个层次。这本书以其深入浅出的讲解方式和丰富的实例,深受全球程序员的喜爱。中英文双语版更是...
《Thinking in Java》是Bruce Eckel的经典之作,它深度探讨了Java编程语言的各个方面,是许多Java程序员必备的参考书籍。这本书以其详尽的解释、丰富的示例和深入的理论见解,深受全球开发者喜爱。"java in Thinking...
7. **线程局部变量模式**:每个线程拥有独立的变量副本,避免了线程间的数据共享,`ThreadLocal`类提供此功能。 书中还涉及了其他重要主题,如线程通信、线程池的最佳实践、内存模型和可见性、原子变量、并发集合等...
《Thinking in Java 3》是Java编程领域里一本极具影响力的著作,由Bruce Eckel撰写。这本书深入浅出地讲解了Java编程语言的核心概念和技术,帮助读者建立起坚实的基础,并引导他们以面向对象的思维方式来思考问题。...
6. **多线程**:Java提供了丰富的API来支持多线程编程,包括Thread类、Runnable接口、synchronized关键字、volatile和ThreadLocal等。 7. **输入/输出流**:理解I/O流的基本概念,包括字节流、字符流、缓冲流、对象...
7. **多线程**:Java提供内置的多线程支持,书中会讲解线程的创建、同步和通信,以及ThreadLocal、ExecutorService等高级话题。 8. **输入/输出流**:Java的I/O系统是处理文件和网络通信的关键,包括文件流、字符流...
《Thinking in Java》是Bruce Eckel的经典之作,第二版对初学者和经验丰富的开发者都具有极高的价值。这本书深入浅出地介绍了Java编程语言的核心概念和技术,帮助读者建立起扎实的面向对象编程思想。 1. 面向对象...
5. **多线程**:讲解了Java中的并发编程,包括线程的创建、同步机制(如synchronized关键字、wait()和notify()方法)以及高级特性如ThreadLocal。 6. **输入/输出系统**:讨论了Java的I/O流,包括文件操作、序列化...
这里的"java_concurrency_in_practice_source"源代码正是书中实例的实现,它涵盖了Java多线程编程中的关键概念和技术。 1. **线程基础**:Java中创建线程有两种方式,一是通过`Thread`类的子类,二是实现`Runnable`...
《Java Concurrency in Practice》是Java并发编程领域的一本经典著作,由Brian Goetz、Tim Peierls、Joshua Bloch、Joseph Bowles和Doug Lea等专家共同编写。这本书深入探讨了Java平台上的多线程和并发编程,旨在...
《Thinking in Java》是 Bruce Eckel 的经典编程著作,第三版中文版的压缩包 "Thinking.In.Java.Third.Edition.CHS.zip" 提供了这本书的中文电子版资源。这本书是许多程序员入门Java语言的重要参考书,它深入浅出地...
4. **多线程**:详细阐述了Java中的线程概念,包括线程的创建、同步、互斥和死锁,以及ThreadLocal、ExecutorService和并发工具类的使用。 5. **输入/输出和流**:探讨了Java的I/O系统,包括字节流、字符流、对象...
7. **线程局部变量**:`ThreadLocal`用于创建线程私有的变量,可以避免数据共享导致的问题。 8. **异常处理**:在并发环境下,异常处理策略需要特别注意,以防止线程被意外中断或异常传播导致系统不稳定。 9. **...
《Java Concurrency in Practice》是Java并发编程领域的一本权威著作,由Brian Goetz、Tim Peierls、Joshua Bloch、David Holmes和Doug Lea等多位Java并发领域的专家共同编写。这本书深入探讨了Java平台上的多线程和...
8. **线程局部变量**:ThreadLocal是Java提供的一个类,它允许每个线程拥有自己独立的变量副本,避免了线程间的数据共享和同步问题。 9. **异常处理**:在多线程环境中,异常处理是必须考虑的问题。书中会讨论如何...
"All Algorithms implemented in Java(3).zip" 提供的是一份包含多种算法实现的Java代码库,对于学习和理解算法有着极高的价值。这个压缩包中的"Java-master"文件夹很可能包含了不同分类的算法实现,如排序、搜索、...