-
Notifications
You must be signed in to change notification settings - Fork 779
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2020-03-03:说说ThreadLocal的使用场景?与Synchronized相比有什么特性? #238
Comments
ThreadLocal和Synchronized虽然都和多线程有关. |
ThreadLocal的应用场景是:当多个线程访问同一个类的变量,但是又不想共享,只想在自己的的线程中使用,那么ThreadLocal就能实现把变量从线程中隔离的作用 Synchronized是保证同一时刻只有一个线程能访问对象,对象是共享的 |
ThreadLocal 是一个线程内部的数据存储类。通过它可以指定线程中存储的数据,只有指定的线程才可以读取到数据,对应其他线程是无法拿到数据的 |
线程安全有三种类别: 使用场景:看源码里面,以Thread作为key,那么Thread数量较多且有交互的情况就很合适。例如:线程池的线程独立内容管理。 |
ThreadLocal是数据存储类,内部有一个ThreadLocalMap类,Thread持有ThreadLocalMap类型的变量,使用ThreadLocal存储数据时,其实是将数据存储到当前Thread的ThreadLocalMap变量里面, 就使用场景而言: 注: 所以上面几个回复中所有【以Thread作为key】的说法全是错的。 |
前面说Thread作为key是错误的 ,ThreadLocal才是key, 该key虽然是个弱引用, 但是还是会存在内存泄漏的风险, 使用完后remove掉才可以避免出现内存泄漏 |
No description provided.
The text was updated successfully, but these errors were encountered: