线程安全的类在java中有几种?如何成为线程安全类?

TheDisguiser 2020-05-26 20:15:12 java常见问答 3131

上回我们说到了在java有哪些集合是线程安全的,其实,类也可以是线程安全的,你们知道都有哪些类是线程安全的吗?快跟小编一起了解了解吧。

线程安全类有哪些?

在java中分别有着四种线程安全的类,如下:

1.vector

类似于arraylist,但比arraylist多了个同步化机制,就是线程安全,但由于效率低下,现在已经不在使用了。因为在各种web应用中,特别是前台页面,往往效率是要最优先考虑的。

2.statck

是一个堆栈类,它是线程安全的,先进后出机制。

3.hashtable

各种方法机制都类似于hashmap,但就是比hashmap多了个线程安全。

4.enumeration

枚举类,是线程安全的,类似于一个迭代器吧。

线程安全示意图:

线程安全的类

线程安全类如何实现?

在java中,大部分类都是不安全的,除了两种:

1. 不可变类,不可变类就是指,在这个类中,一旦它的对象被创建出来,在其整个生命周期中,它的成员变量就不能被修改、

2.类中带有synchronized关键字的类,这个关键字就是为了使这个类变成线程安全的。

一般来说,能避免并发问题的两种手段就只有它们了,不变性和隔离性,synchronized就是为了实现隔离性,以使并行的访问变为线性的访问。

如果一个可变类没有一个synchronized关键字,它就肯定不是线程安全的,带有synchronized关键字的可能是线程安全的类型,Hashtable中的好多方法带有synchronized,所以它是线程安全的。

synchronize关键字就是为了让一个类成为线程安全类诞生的。

以上就是关于线程安全类的所有内容了,如果你对java有着浓厚的兴趣,还想了解更多类似这种java常见问答知识的内容的话,就请关注我们网站来了解吧。

推荐阅读:

线程安全的单例模式有几种?有何特点?

线程安全与线程不安全如何来理解呢?

java什么是线程安全?线程安全是什么意思?