首页 > 编程语言 >Java分布式应用:分布式Java应用与Sun JDK类库

Java分布式应用:分布式Java应用与Sun JDK类库

时间:2023-03-08 11:40:02浏览次数:37  
标签:类库 Java HashMap 对象 分布式应用 安全 Vector 线程 序列化


第四部分 分布式Java应用与Sun JDK类库

集合包

Java分布式应用:分布式Java应用与Sun JDK类库_数组

CollectionList接口:

List接口:List(有序、可重复)的实现类有ArrayList、Vector、LinkList ArrayList、Vector底层是通过数组实现的,LinkList是通过双向链表实现的。Vector支持线程同步(Stack栈是实现Vector)。

Set接口:Set(无序、不可重复)实现类有 HashSet(基于HashMap,可以为null)和TreeSet(基于TreeMap,不可为null)HashSet和TreeMap都是非线程安全的。

Queue接口: Queue:实现类有 Deque:底层是是数组,有2个标志位指向数组的头与尾实现双端队列。

Map接口:

HashMap(不支持排序)

  • 采用数组方式存储key、Value构成的Entry对象,无容量限制
  • 基于key hash进行对象的定位,对于hash冲突采用链表法或者开放地址法来解决
  • 当需要扩大数组容量时,要重新计算hash值
  • HashMap是线程非安全的

TreeMap(支持排序)

  • 基于红黑树实现,无容量限制
  • 非线程安全的
  • 支持排序的

Hashtable
线程安全的

HashMap和HashTable的区别:
1.HashMap 对象的 key、value 值均可为 null。 HahTable 对象的 key、value 值均不可为 null。。
2.HashTalle是线程安全的,而HashMap不是线程安全的。
3.Hashtable直接使用对象的hashcode,HashMap重新计算hash值。
4.HashTable使用Enumeration,而HashMap使用Iterator.
Enumeration只能Read-Only模式,不可进行删除。

总结:
1.集合只有Vector和Hashtable是线程安全的(其他集合可以使用Collections.syschronied***()进行线程同步)
2.集合中实现List接口和TreeMap、Linkhashmap支持排序 (利用Collections.sort(集合,比较器))

并发包

常见集合实现同步的方式:
HashMap:ConcurrentHashMap是线程安全的HashMap的实现。
ArrayList:CopyOnWriteArrayList是线程安全、并且在读操作时无锁的ArrayList。
Set:CopyOnWriteArraySet基于CopyOnWriteArrayList而现实。 (每次add 会遍历查重 性能比较差)
Queue:ArrayBlockingQueue是一个基于数组、先进先出、线程安全的集合类,可以指定时间阻塞,并且容量是可限制的。

序列化和反序列化

ByteArrayOutputStream /ByteArrayInputStream ObjectOutputStream/ObjectInputStream

把对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为对象的过程称为对象的反序列化。

用途:文件的copy、网络数据的传输。

Java分布式应用:分布式Java应用与Sun JDK类库_Sun JDK类库_02


标签:类库,Java,HashMap,对象,分布式应用,安全,Vector,线程,序列化
From: https://blog.51cto.com/u_15997399/6107928

相关文章

  • Java分布式应用:深入了解JVM
    第三部分深入理解JVMJava代码的执行过程Java源码编译机制javac将java源码转换成javaclass字节码java运行javaclass字节码Java编译后产生的是字节码,在运行的时候将字......
  • Java基础面试(三)
    Java基础面试(三)1.Java一个类当中如果没有构造函数,编译器会自动生成一个缺省的构造函数;如果这个类有其他的构造函数,编译器则不会提供缺省构造参数。2.SpringMVC与Struct2.......
  • 实现动态切换版本JDK8和JAVA17
    一、下载安装两个版本的JDK官网下载地址:JavaDownloads|Oracle下载安装成功后,安装路径E:\Java\上 JDK8 有两个包一个jdk1.8.0_231,一个jre1.8.0_231。JDK17只有一个j......
  • java map集合的基本功能
          ......
  • java标识符,关键字和运算符
    Java标识符和关键字数据类型​Java数据类型分为基本类型和引用类型。基本类型整数类型:byte,占一个字节范围:-128~127short,占两个字节范围:-32768-32767int,占4个字......
  • jmeter发送java请求
    本文描述jmeter如何发送java请求1.编写java请求,将加密、签名等封装,对外只暴露需要传的业务参数,jemter发送java请求时直接传入业务参数即可  具体代码如下:importco......
  • Paxos算法理解与java实现
    Paxos在分布式环境下应用非常广泛,是一致性算法里面优越的代表。Google的粗粒度锁服务Chubby的设计开发者Burrows曾经说过:所有一致性协议本质上要么是Paxos要么是其变体。......
  • Java堆分析
    在JVM中,有以下内存区间:堆、永久区、线程栈、直接内存内存溢出(OOM)的原因及解决方法堆溢出原因:占用大量堆空间,直接溢出解决方法:增大堆空间,及时释放内存永久区溢出原因:生成......
  • mybatis异常 java.lang.ClassCastException: com.sun.proxy.$Proxy445
    此类异常处理:java.lang.ClassCastException:com.sun.proxy.$Proxy445cannotbecasttocom.xxx.**MapperBridgeApplication启动类的注解没有扫描到对应的Mapper文......
  • Java开发工具
    吾心安处即吾乡。吾乡何处不可眠1.都有哪些开发Java的工具级别一:文本开发工具级别二:集成开发环境(IntegratedDevelopmentEnvironment,IDE)把代码编写,编译,执行,......