ThreadLocal见解及知识备用

1)ThreadLocal是一个Java类,通过对当前线程(Thread)中的局部变量的操作来解决不同线程的变量访问的冲突问题。所以,ThreadLocal提供了线程安全的共享对象机制,每个线程(Thread)都拥有其副本。

2)Java中的synchronized是一个保留字,它依靠JVM的锁机制来实现临界区的函数或者变量在访问中的原子性。在同步机制中,通过对象的锁机制保证同一时间只有一个线程访问变量。此时,被用作“锁机制”的变量是多个线程共享的。

同步机制采用了“以时间换空间”的方式,提供一份变量,让不同的线程排队访问。而ThreadLocal采用了“以空间换时间”的方式,为每一个线程都提供了一份变量的副本,从而实现同时访问而互不影响。


而ThreadLocal多用于,线程池、session域的管理、多用户间的request\response以及死锁检测,另外由于KEY的弱引用导致内存泄露(其实并不算真正意义上的内存泄露,毕竟这是设计上的一种没办法的事情,当GC时弱引用被回收时,value还存在着强引用,导致内存泄露,但是当key为null时,过段时间会将对应的value值也置为NULL,以致于被回收掉,当然了线程池本身由于不会删除对应线程,只是归还于线程池,导致VALUE强引用一直存在,而且归还后还有以前的旧值,应该在使用时需要调用它的remove方法来规避内存泄露)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值