下面有关java threadlocal说法正确的有?

下面有关java threadlocal说法正确的有?
 
 A. ThreadLocal存放的值是线程封闭,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递
 
  B. 线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收
 
 C. 在Thread类中有一个Map,用于存储每一个线程的变量的副本。
 
 D. 对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式

ThreadLocal类用于创建一个线程内部的局部变量。
  在Thread中有一个成员变量ThreadLocals,该变量的类型是ThreadLocalMap,也就是一个Map,它的键是threadLocal,值就是线程的变量的副本。通过ThreadLocalsget()方法可以获取该线程变量的本地副本,在get方法之前要先set,否则就要重写initialValue()方法。
  
ThreadLocal的使用场景:
数据库连接:在多线程中,如果使用懒汉式的单例模式创建Connection对象,由于该对象是共享的,那么必须要使用同步方法保证线程安全,这样当一个线程在连接数据库时,那么另外一个线程只能等待。这样就造成性能降低。
如果改为哪里要连接数据库就来进行连接,那么就会频繁的对数据库进行连接,性能还是不高。


答案:A B C D

阅读更多
文章标签: Java 线程
个人分类: Java错题集
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭