集合中线程安全的类

集合中线程安全的类有:vector,stack,hashtable,enumeration,除此之外均是非线程安全的类与接口

Collection 是对象集合, Collection 有两个子接口 List 和 Set,



List 可以通过下标 (1,2..) 来取得值,值可以重复,而 Set 只能通过游标来取值,并且值是不能重复的

ArrayList , Vector , LinkedList 是 List 的实现类

ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的

LinkedList 是线程不安全的,底层是由链表实现的



Map 是键值对集合

HashTable 和 HashMap 是 Map 的实现类

HashTable 是线程安全的,不能存储 null 值

HashMap 不是线程安全的,可以存储 null 值

原文地址:https://www.cnblogs.com/wwb0811/p/9602160.html

时间: 2024-10-05 07:19:49

集合中线程安全的类的相关文章

浅析Java中线程组(ThreadGroup类)

Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理.可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的组织结构有点类似于树的形式,如图所示. 用户创建的所有线程都属于指定线程组,如果没有显式指定属于哪个线程组,那么该线程就属于默认线程组(即main线程组).默认情况下,子线程和父线程处于同一个线程组. 此外,只有在创建线程时才能指定其所在的线程组,线程运行中途不能改变它所属的线程组,也就是说线程一旦

Collection单列集合中的常用实现类

Collection 集合层次的根接口 List 有序 有索引 可以重复 ArrayList 底层数据结构是数组 查询快 增删快 线程不安全 效率高 LinkedList 底层数据结构是链表 查询慢 增删快 线程不安全 效率高 Vector 底层数据是数组 查询和增删介于前两者之间 线程安全 效率低 Set 唯一 在调用add()方法时: 在底层中以map的形式存储,存储时调用元素的hashCode(),equals(),map会自动比较key值(就是hash值) 先比较hash值 如果对象的h

Java集合中那些类是线程安全的

线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用.在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的. statck:堆栈类,先进后出 hashtable:就比hashmap多了个线程安全 enumeration:枚举,相当于迭代器 除了这些之外,其他的都是非线程安全

Java中的集合和线程安全

通过Java指南我们知道Java集合框架(Collection Framework)如何为并发服务,我们应该如何在单线程和多线程中使用集合(Collection). 话题有点高端,我们不是很好理解.所以,我会尽可能的描述的简单点.通过这篇指南,你将会对Java集合由更深入的了解,而且我敢保证,这会对你的日常编码非常有用. 1. 为什么大多数的集合类不是线程安全的? 你注意到了吗?为什么多数基本集合实现类都不是线程安全的?比如:ArrayList,?LinkedList,?HashMap,?Has

集合中的工具类Collections和Arrays

集合框架的工具类: Collections: 方法sort(): List<String> list = new ArrayList<String>();        list.add("gfhd");        list.add("abc");        list.add("a");        list.add("aaaadfs");sort(list);//按自然顺序排列,String

13弹;集合中的工具类Collections和Arrays

集合框架的工具类: Collections: 方法sort() System.out.println(list); // 自然排序 Collections.sort(list); System.out.println(list); // 按照字符串长度排序,再自然排序 Collections.sort(list,new Compare()); System.out.println(list); binarySearch 方法 前提是此集合必须是有序的 返回插入位置 角标的负数再减一: fill方

Delphi中线程类TThread 实现多线程编程

作者:Rogee出处:Http://Rogee.cnblogs.com/心得:BLOG是什么,它是一个记录学习过程的东西 Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了.然而这并不是多线程编程的全部,我写此文的目的在于对此作一个补充. 线程本质上是进程中一段并发运行的代码.一个进程至少有一个线程,即所谓的主线程.同时还可以

字符串工具类(判断是否为空,是否不为空,过滤掉集合中的空格元素)

import java.util.ArrayList; import java.util.List; /** * 字符串工具类 * @author gabodouer * */ public class StringUtil { /** * 判断是否是空 * @param str * @return */ public static boolean isEmpty(String str) { if (str == null || "".equals(str)) { return tru

Java集合中的LinkedHashMap类

jdk1.8.0_144 本文阅读最好先了解HashMap底层,可前往<Java集合中的HashMap类>. LinkedHashMap由于它的插入有序特性,也是一种比较常用的Map集合.它继承了HashMap,很多方法都直接复用了父类HashMap的方法.本文将探讨LinkedHashMap的内部实现,以及它是如何保证插入元素是按插入顺序排序的. 在分析前可以先思考下,既然是按照插入顺序,并且以Linked-开头,就很有可能是链表实现.如果纯粹以链表实现,也不是不可以,LinkedHashM