Java哪些集合类是线程安全的
线程安全类
在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的。在jdk1.2之后,就出现许许多多非线程安全的类。 下面是这些线程安全的同步的类:
vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。
statck:堆栈类,先进后出
hashtable:就比hashmap多了个线程安全
enumeration:枚举,相当于迭代器
除了这些之外,其他的都是非线程安全的类和接口。
线程安全的类其方法是同步的,每次只能一个访问。是重量级对象,效率较低。
其他:
1. hashtable跟hashmap的区别
hashtable是线程安全的,即hashtable的方法都提供了同步机制;hashmap不是线程安全的,即不提供同步机制 ;hashtable不允许插入空值,hashmap允许!
2. 多线程并发修改一 个 集合 怎么办
用老的Vector/Hashtable类
StringBuffer是线程安全,而StringBuilder是线程不安全的。对于安全与不安全没有深入的理解情况下,易造成这样的错觉,如果对于StringBuffer的操作均是线程安全的,然而,Java给你的保证的线程安全,是说它的方法是执行是排它的,而不是对这个对象本身的多次调用情况下,还是安全的。看看下边的例子,在StringBufferTest中有一个数据成员contents它是用来扩展的,它的每一次append是线程安全的,但众多次append的组合并不是线程安全的,这个输出结果不是太可控的,但如果对于log和getContest方法加关键字synchronized,那么结果就会变得非常条理,如果换成StringBuider甚至是append到一半,它也会让位于其它在此基础上操作的线程:
一些历史类的一般是线程安全的,例如:Vector,HashTable等
在jdk升级后,出现了替代一些集合的类,ArrayList,HashMap等,一般都是线程不安全的。
vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。
statck:堆栈类,先进后出
hashtable:就比hashmap多了个线程安全
enumeration:枚举,相当于迭代器
除了这些之外,其他的都是非线程安全的类和接口。
线程安全的类其方法是同步的,每次只能一个访问。是重量级对象,效率较低。
其他:
1. hashtable跟hashmap的区别
hashtable是线程安全的,即hashtable的方法都提供了同步机制;hashmap不是线程安全的,即不提供同步机制 ;hashtable不允许插入空值,hashmap允许!
我知道的线程安全的结合是vector,
芬兰语如何书写?如何读?怎么学习?好不好学啊?
-sto\/stö : 集合 (kirja = 一本书 -> kirjasto = 图书馆; laiva = 一只船 -> laivasto = 海军、舰队)-in : 部分或工具 (kirja = 一本书 -> kirjain = 一个字母; vatkata = 掸 -> vatkain = 掸子,搅拌器)-uri\/yri : 做的人或物 (kaivaa = 挖 -> kaivuri = ...
金奈的气候特点及成因
George的旗杆是全印度最长的。城堡的南端是一座外形优雅的战争纪念碑,建于1939年,为了纪念那些第一次世界大战中牺牲的士兵们。Grounds全市最大,位于Cooum河中小岛,在这里你可以自由的呼吸新鲜空气,尽情享受大自然。这个广场也是重要的贸易集合地,旅游展会也在此定期举行,这些都吸引了大批游客前往参观。
java的常用接口有哪些?
NullPointerException在所有的异常中是最受欢迎的,而Exception异常是在所有异常层次结构的顶部。4.java.util.ArrayList 一个实现数组的数据结构的类。这个类实现了List接口,是最受欢迎的Java集合类的成员,Arr ayList和Vector之间的差异是初学者常见的问题之一,它也经常在java面试中被问到。5.ava.util....
java的常用接口有哪些?
NullPointerException在所有的异常中是最受欢迎的,而Exception异常是在所有异常层次结构的顶部。4.java.util.ArrayList 一个实现数组的数据结构的类。这个类实现了List接口,是最受欢迎的Java集合类的成员,Arr ayList和Vector之间的差异是初学者常见的问题之一,它也经常在java面试中被问到。5.ava.util....
java中的t是什么意思啊?
JAVA 中<t>是泛型的意思 意思是Tree这个类里面需要用到另外一个类,但是又不能确定要用到的那个类的具体类型,所以暂时用T来代替,当具体的程序知道要用到的那个类型是什么的时候就用那个类型来代替T,就ok了。例如我需要实例化一个Tree类,需要用到的那个类是String,那么我就可以这么来实例化Tree<...
什么是< t>?
JAVA 中<t>是泛型的意思 意思是Tree这个类里面需要用到另外一个类,但是又不能确定要用到的那个类的具体类型,所以暂时用T来代替,当具体的程序知道要用到的那个类型是什么的时候就用那个类型来代替T,就ok了。例如我需要实例化一个Tree类,需要用到的那个类是String,那么我就可以这么来实例化Tree<...
java的泛型是什么?
JAVA 中<t>是泛型的意思 意思是Tree这个类里面需要用到另外一个类,但是又不能确定要用到的那个类的具体类型,所以暂时用T来代替,当具体的程序知道要用到的那个类型是什么的时候就用那个类型来代替T,就ok了。例如我需要实例化一个Tree类,需要用到的那个类是String,那么我就可以这么来实例化Tree<...
什么是java中的泛型?
JAVA 中<t>是泛型的意思 意思是Tree这个类里面需要用到另外一个类,但是又不能确定要用到的那个类的具体类型,所以暂时用T来代替,当具体的程序知道要用到的那个类型是什么的时候就用那个类型来代替T,就ok了。例如我需要实例化一个Tree类,需要用到的那个类是String,那么我就可以这么来实例化Tree<...
JAVA 中<t>是什么意思,
JAVA 中<t>是泛型的意思 意思是Tree这个类里面需要用到另外一个类,但是又不能确定要用到的那个类的具体类型,所以暂时用T来代替,当具体的程序知道要用到的那个类型是什么的时候就用那个类型来代替T,就ok了。例如我需要实例化一个Tree类,需要用到的那个类是String,那么我就可以这么来实例化Tree<...
JAVA 中<t>是什么意思,
JAVA 中<t>是泛型的意思。意思是Tree这个类里面需要用到另外一个类,但是又不能确定要用到的那个类的具体类型,所以暂时用T来代替。当具体的程序知道要用到的那个类型是什么的时候就用那个类型来代替T,例如需要实例化一个Tree类,需要用到的那个类是String,那么就可以这么来实例化Tree<String>()。
程钱永新: java集合框架提供了多种synchronized集合, 比如Vector, HashTable, Collections的synchronizedXxx方法的返回值等.synchronized集合是线程安全的, 但不是严格线程安全的. 根据JCIP第二章关于线程安全的定义--线程安全的类无需调用方进行额外的同步--synchronized集合是不满足该定义的. 如果我们将线程安全的定义放宽一些--单次调用对象的方法而无需调用方进行额外的同步, 这样synchronized集合就符合定义了.
松阳县18645847956: java并发类有哪些 - ?
程钱永新: 1、常用的并发集合类 ConcurrentHashMap:线程安全的HashMap的实现 CopyOnWriteArrayList:线程安全且在读操作时无锁的ArrayList CopyOnWriteArraySet:基于CopyOnWriteArrayList,不添加重复元素 ArrayBlockingQueue:基于数组、先...
松阳县18645847956: JAVA中线程安全的map有哪些? - ?
程钱永新: JAVA中线程安全的map有:Hashtable、synchronizedMap、ConcurrentHashMap.java中map中线程安全怎么实现:1. 同步的map就是Hashtable, concurrenthashmap.2. 你看到的Hashtable就是直接在hashmap上加了个锁,concurrenthashmap...
松阳县18645847956: 在Java开发中如何选择使用哪种集合类? - ?
程钱永新: Vectot 和 Hashtable类被定义为线程安全(同步)类,使用效率受到一定的限制,而Stack类在设计时存在一些不恰当的方法,因此,三个类建议用新版本中的ArrayList类、Hashtable类、和LinkedList类取代. 要获得线程安全的功能,可以使用Colections类获得.
松阳县18645847956: java中所有的集合只有Hashtable和vector是线程安全的吗 - ?
程钱永新: jdk1.5 引入的ConcurrentLinkedQueue、ConcurrentHashMap、CopyOnWriteArrayList 和 CopyOnWriteArraySet 也是线程安全的.
松阳县18645847956: java并发,如何加锁,哪些类是线程安全的 - ?
程钱永新: 线程安全是指要控制多个线程对某个资源的有序访问或修改,而在这些线程之间没有产生冲突.在Java里,线程安全一般体现在两个方面: 1、多个thread对同一个java实例的访问(read和modify)不会相互干扰,它主要体现在关键字...
松阳县18645847956: 哪些集合对象线程是安全的,哪些是不安全的 - ?
程钱永新: 一些历史类的一般是线程安全的,例如:Vector,HashTable等 在jdk升级后,出现了替代一些集合的类,ArrayList,HashMap等,一般都是线程不安全的.
松阳县18645847956: java中为什么说,String是线程安全的? - ?
程钱永新: String是不可变类,所以是线程安全的. 1、所有不可变类都是线程安全的,线程安全的类不一定是不可变类,如StringBuffer是可变类,靠锁实现线程安全.2、StringBuffer方法上都加了synchronized,StringBuilder没有,StringBuilder在多线程...
松阳县18645847956: java集合 有序无序,线程是否安全 - ?
程钱永新: 1.有序集合:集合里的元素可以根据key或index访问;无序集合:集合里的元素只能遍历.有序集合在属性的增加,删除及修改中拥有较好的性能表现.Set集合一般是无序的.实现hash算法的集合一般是无序的,例如hashMap,hashTable List集...