网络安全

位置:IT落伍者 >> 网络安全 >> 浏览文章

Java容器类的线程安全


发布日期:2023年12月07日
 
Java容器类的线程安全

Java容器类的关系图

Collection

├List 接口

│├LinkedList 链表

│├ArrayList 顺序结构动态数组类

│└Vector 向量

│└Stack 栈

└Set

Map

├HashTable

├HashMap

└WeakHashMap List接口

线程安全的和线程不安全的

Vector和HashMap是线程安全的

LinkedListArrayList和HashMap是线程不安全的

由于同步需要花费时间因此线程安全的执行效率要低于线程不安全的

在多线程操作

案例多线程操作导致List报NoSuchElementException

javautilNoSuchElementException

at javautilLinkedListremove(LinkedListjava:)

at javautilLinkedListremoveFirst(LinkedListjava:)

at reRegexBuiltinsgetPattern(RegexBuiltinsjava:)

解决方法

调用Collections的同步List

List<String> items = CollectionssynchronizedList(new LinkedList<String>());

public void remove() {

if (!itemsisEmpty()) {

return itemsremove();

}

}

设置标志同步

LinkedList<String> items = new LinkedList<String>();

String flag=abcdef;

public void remove() {

synchronized(flag){

if (!itemsisEmpty()) {

return itemsremoveFirst();

}

}

}

上一篇:如何让applet访问网络?

下一篇:安全技术 Java与安全性,第1部分一