- 浏览: 515908 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (268)
- C/C++ (5)
- LUA (0)
- JVM (6)
- UML (1)
- J2SE (43)
- J2EE (15)
- EXTJS (1)
- HTML5 (47)
- ANDROID (2)
- JAVASCRIPT (51)
- WEB SERVICES (0)
- 数据库 (2)
- 数据结构 (0)
- 应用服务器 (11)
- 设计模式应用 (0)
- JAVA性能与缓存 (1)
- ByteCode (5)
- RCP (0)
- Plugin (0)
- Eclipse (3)
- 程序人生 (14)
- Mobile (2)
- Linux/Ubuntu (31)
- sublime (2)
- python (15)
- Git (5)
- NodeJs (3)
- Crosswalk (1)
- Browserify (1)
- Backbone (1)
最新评论
ThreadLocal用于实现线程内的数据共享,即对于相同的代码,多个模块在同一线程中运行时要共享一份数据,而在另外的线程中运行时又共享另外一份数据.
实现对ThreadLocal变量的封装,让外界不直接操作ThreadLocal变量,一是对基本类型的数据封装,这种应用相对少见,二是对对象类型的数据封装,较常见,即让某个类针对不同线程分别创建一个独立的实例对象.
以下是ThreadLocal常用封装:
class MyThreadScopeData{ private MyThreadScopeData(){} public static MyThreadScopeData getThreadInstance(){ MyThreadScopeData instance = map.get(); if(instance == null){ instance = new MyThreadScopeData(); map.set(instance); } return instance; } private static ThreadLocal<MyThreadScopeData> map = new ThreadLocal<MyThreadScopeData>(); private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
发表评论
文章已被作者锁定,不允许评论。
-
关于Thread.IsAlive属性
2015-07-04 12:12 882今天在讨论多线程的时候,谈到了这个属性。IsAlive,顾名 ... -
Java:对象的强、软、弱和虚引用
2015-02-28 11:00 731文章源自:http://zhangjunhd.blog.51 ... -
一个通用并发对象池的实现
2015-01-20 09:32 733Source: http://ifeve.com/gener ... -
如何创建不可变的Java类或对象
2015-01-07 16:29 2183在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过 ... -
并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue用法
2014-12-29 11:49 803文章源自:http://www.cnblogs.com/li ... -
中断线程深入
2014-12-25 15:18 795本文转自http://jiangzhengjun.itey ... -
深入java.lang.ThreadLocal类
2014-12-24 16:50 709文章源自:http://lavasoft.blog.51c ... -
Java 8新特性探究(3):解开lambda最强作用的神秘面纱
2014-07-10 17:50 711文章源自:http://developer.51cto.co ... -
Java 8特性探究(2):深入解析默认方法
2014-07-08 11:12 782文章源自:http://develop ... -
Java 8特性探究(1):通往lambda之路_语法篇
2014-07-08 09:59 691文章源自:http://developer.51cto.c ... -
java文件复制方法参考
2013-12-02 14:17 730最快的文件复制方法 private static ... -
用Java数字签名提供XML安全
2013-11-29 16:11 13134文章源自:http://www. ... -
深入理解HashMap的工作原理
2013-11-18 15:49 824HashMap的工作原理是近 ... -
JDBC4.0 驱动加载过程
2013-01-16 10:09 3634注意,jdbc4.0不再需要显示调用class.fo ... -
Java自定义的类加载器
2013-01-15 08:38 1014一、类加载器类别 * 1.java虚拟机自带的加载器 ... -
使用Log4j生成不同日志级别的日志文件
2012-12-26 17:09 5332在src根目录下存放log4j.xml文件,具体配置如下(测试 ... -
深入理解HashMap
2012-12-13 10:08 865文章摘自:http://www.iteye.c ... -
java字节码加解密
2012-06-30 09:53 1096一.创建KEY class Key { ... -
java动态代理简单实现
2012-06-30 09:45 1026一.接口 public interface Foo { ... -
线程池简单实现
2012-06-25 11:42 1097其实线程池的实现就是生产者消费者问题 的实现,理解了生产者消 ...
相关推荐
Java中的ThreadLocal是一个非常重要的工具类,它在多线程编程中扮演着独特角色,尤其在处理线程间数据隔离和共享时。ThreadLocal不是线程本身,而是为每个线程提供一个独立的变量副本,使得每个线程都可以独立地改变...
例如,如果线程之间需要共享数据,但又不想影响其他线程,ThreadLocal就是一个理想的选择。同时,也要注意ThreadLocal的内存泄漏问题,当线程结束但ThreadLocal未清除时,可能会导致内存占用过高。 总之,Spring...
在Java编程领域,事务管理是确保数据一致性与完整性的关键机制。事务是数据库操作的一组逻辑单元,这些操作要么全部成功,要么全部回滚,从而防止数据不一致的情况发生。而模板设计模式则是一种行为设计模式,它提供...
4. **并发集合**:Java的并发集合类库,如`ConcurrentHashMap`、`CopyOnWriteArrayList`和`BlockingQueue`,是高并发环境下数据共享的重要工具。书中会详细讲解这些集合类的设计原理和使用技巧。 5. **并发设计模式...
二级缓存则需要额外配置,用于跨Session的数据共享。 #### 四、持久层的设计与实现 在构建基于Hibernate的信息查询系统时,持久层的设计尤为关键。为了确保系统的可扩展性和可维护性,采用了以下几种设计模式和...
2. **避免共享的设计模式**:共享数据是引发线程安全问题的主要源头。一种有效的策略是使用“不可变”对象,这些对象一旦创建就无法改变。此外,可以使用"线程局部变量"(ThreadLocal)来为每个线程提供独立的副本,...
在多线程环境中,数据共享可能导致竞态条件,这时需要使用同步机制,如`synchronized`关键字、`wait()`、`notify()`和`notifyAll()`方法。此外,`java.util.concurrent`包提供了高级并发工具,如`Semaphore`(信号量...
10. **线程局部变量**:`ThreadLocal`类允许每个线程都有自己的变量副本,减少了共享数据带来的同步问题。 以上就是Java多线程设计模式的一些核心概念,理解并熟练运用这些模式,能帮助开发者编写出高效、安全的...
为了确保数据一致性,当多个线程访问共享资源时,需要使用同步机制,如`synchronized`关键字或`Lock`接口。 5. **线程休眠** - `Thread.sleep(long milliseconds)`方法让当前线程进入休眠状态,指定的时间过后线程...
- **ThreadLocal的使用场景**:在第44讲中,讨论了ThreadLocal在实际生产中的应用,如解决线程间数据隔离的问题,避免了共享数据带来的并发问题。 5. **性能优化** - **多线程带来的性能问题**:第08讲揭示了过度...
第二章:共享数据与并发问题 在这一章中,作者深入讨论了多线程环境下共享数据带来的问题,如数据竞争(Race Condition)、死锁(Deadlock)、活锁(LiveLock)和饥饿(Starvation)。介绍了 volatile 关键字的作用...
6. **线程局部变量**:`ThreadLocal`类为每个线程都提供了独立的变量副本,避免了线程间的数据共享问题,但过度使用可能导致内存泄漏。 7. **并发设计模式**:生产者消费者模型、读写锁策略、双检锁/双重校验锁...
这种特性使得线程间的数据共享非常便捷,但也带来了同步问题。 **3.2 同步机制** 为了解决线程间的数据竞争问题,Java提供了多种同步机制: - **synchronized关键字:** 可用于方法或代码块,确保同一时刻只有一...
9. **分离锁与分散锁**:尽可能选择分离锁(如`ReentrantReadWriteLock`)或无锁数据结构(如`ConcurrentHashMap`),以提高并发性能。 10. **基于`ThreadLocal`避免锁**:在某些情况下,使用`ThreadLocal`可以避免...
- **ThreadLocal**:`ThreadLocal`提供线程局部变量,每个线程都有自己的副本,避免了线程间的数据冲突。 五、线程池与异常处理 Java的`ExecutorService`和`ThreadPoolExecutor`允许我们管理和控制线程。当线程池中...
Java语言在设计时就充分考虑了多线程环境,提供了丰富的API和机制来支持线程的创建、同步与通信。本书深入浅出地讲解了这些概念,包括线程的生命周期、线程的优先级、线程的启动与终止,以及如何处理线程间的竞争...
然而,直接停止线程(如调用`Thread.Abort()`)可能会导致数据不一致,因此推荐使用共享标志或`volatile`关键字来优雅地关闭线程。 3. **线程同步与互斥**: - `Mutex`:互斥锁,确保同一时间只有一个线程访问特定...
8. **线程局部存储**:使用`ThreadLocal<T>`类,可以在每个线程中维护独立的数据副本,避免了线程间的共享状态。 9. **并发集合**:`.NET`提供了一些线程安全的集合类,如`ConcurrentDictionary, TValue>`和`...
11. **AQS中的共享锁与独占锁**:独占锁只有一个线程能获得,如synchronized;共享锁允许多个线程同时获取,如ReentrantReadWriteLock。 12. **生产者消费者模型**:一种多线程同步模型,生产者线程生成数据,消费...