java transferto_分享5个java核心知识点

关于集合

1、Vector、ArrayList、LinkedList的区别

要点如下:

  • 是否线程安全
  • 底层数据存储是通过何种数据结构实现的
fbc312df0f3eff6c9cf7ca057f5e2252.png

集合框架

2、Hashtable、HashMap、TreeMap、LinkedHashMap

核心要点:

  • 是否是线程安全,如果不是线程安全,能否举出异常case
  • 数据存储结构及存取复杂度分析
  • 是否支持null作为key或value
  • 是否支持顺序访问
0c407c08c648d37d1eb4899c623b0e11.png

map继承关系

3、如何保证集合的线程安全?ConcurrentHashMap的线程安全是如何实现的?

如何保证集合的线程安全?

  • 使用JDK提供的线程安全的集合,如:Vector,Stack等
  • 通过Collections类提供的集合包装方法,将集合包装成为线程安全的集合
  • current包下面提供的线程安全容器,比如:ConcurrentHashMap、CopyOnWriteArrayList、BlockingQueue等

ConcurrentHashMap在不同JDK版本中实现也有所不同:

jdk8之前采用分段锁实现,同时也利用volatile保证可见性;

54fec8774899ab44dde7fed43183e659.png

java7实现

在JDK8中,虽然仍然保留了Segment结构,但并没有再使用分段锁,保留的目的仅仅是为了再序列化上保持前向兼容性;

使用CAS进行无锁并发操作、volatile保证可见性;

IO层面

4、java提供了哪些IO操作,NIO是如何实现多路复用的

69216c094414ded21a282786394b862e.png

IO继承关系图

IO的分类方式有很多种,其中常见的一种是BIO、NIO、AIO(NIO2)即:阻塞IO、非阻塞IO、异步IO,NIO全称是None blocked IO;

NIO通过一个selector向多个channel注册监听事件,阻塞等待事件就绪,然后处理就绪事件。多路复用指的是多个channel复用一个线程。

a81fdcfd213eecd911f6160f3eb37706.png

NIO 多路复用模式

5、java的文件拷贝有哪几种实现

  • 通过inputStream读取、outputStream写入实现;
52c5a07a1db5e5fa82cecb97aeddf966.png
  • 利用java.nio 类库提供的 transferTo 或 transferFrom 方法实现
1678f687e9676c6c72b0e2edaec79fa2.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值