本文收集整理关于java中哪些类是线程安全的的相关议题,使用内容导航快速到达。
内容导航:
Q1:java 1.5中线程安全的集合性质的类都有哪些?不安全的呢? 比如array,list,vector,map一类的,具体名字
ArrayList和HashMap是异步的,
Vector和HashTable是同步的。
List本身是一个接口,有一个类叫Vector,它实现了List,并且这个Vector是线程同步的。 在实际运用中,至少我没看见谁直接用List来装东西,最多会是这样:
List list = new ArrayList();
List list = new Vector();
Q2:Java中的类如何保证线程安全
java中,线程安全的解决方法或过程:
1.如果对象是immutable,则是线程安全的,例如:String,可以放心使用。
2. 如果对象是线程安全的,则放心使用。
3.有条件线程安全,对于Vector和Hashtable一般情况下是线程安全的,但是对于某些特殊情况,需要通过额外的synchronized保证线程安全。
4.使用synchronized关键字。
Q3:java arraylist类为什么不是线程安全的?
List 接口下有 ArrayList 和Vector ArrayList不是现成安全的,而Vector是现成安全的。 为什么呢?很简单,打开源码看看 同样的实现Vector的方法前加了 synchronized 关键字 那你说为什么? 人家就是这样子写的
Q4:java并发,如何加锁,哪些类是线程安全的
线程安全是指要控制多个线程对某个资源的有序访问或修改,而在这些线程之间没有产生冲突。
在Java里,线程安全一般体现在两个方面:
1、多个thread对同一个java实例的访问(read和modify)不会相互干扰,它主要体现在关键字synchronized。如ArrayList和Vector,HashMap和Hashtable(后者每个方法前都有synchronized关键字)。如果你在interator一个List对象时,其它线程remove一个element,问题就出现了。
2、每个线程都有自己的字段,而不会在多个线程之间共享。它主要体现在java.lang.ThreadLocal类,而没有Java关键字支持,如像static、transient那样。wwW.YIjItaO.c.OM