大数据课程C1——ZooKeeper的高并发技术

本文介绍了高并发技术中的NIO、JUC。NIO包括Buffer、channel、selector三大组件,用于非阻塞式数据传输。JUC(java.util.concurrent)提供了BlockingQueue、ConcurrentMap和ExecutorService等API,用于解决高并发问题,如阻塞式队列、并发哈希映射和执行器服务。
摘要由CSDN通过智能技术生成

文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州

 

 ▲ 本章节目的

⚪ 了解高并发的技术NIO、JUC;

⚪ 了解高并发的Java技术ConcurrentMap、ExecutorService;

一、NIO

1. 概述

1.1. 作用:传输数据

1.2. 概念回顾

a. 同步:一个对象或者一段逻辑在同一时间只能被一个线程使用。

b. 异步:一个对象或者一段逻辑在同一个时间段内允许被多个线程使用。

c. 阻塞:当线程没有获取到结果之前,那么这个线程就会持续等待而不会继续往下执行也不会报错。

d. 非阻塞:当线程没有获取到结果的时候,不会等待而是继续往下执行或者直接报错。

1.3. IO的分类

a. BIO-BlockingIO-同步阻塞式IO-JDK1.0。

b. NIO-NewIO-NonBlockingIO-同步非阻塞IO-JDK1.4。

c. AIO-AsynchronousIO-异步非阻塞式IO-JDK1.7,AIO相当于NIO的升级版,在NIO的基础之上增加了异步的特 性,在AIO出现之前,市面上已经有了针对于NIO相关的框架,也解决了异步的问题。本质上可以看成是NIO.2。

2. BIO的缺点

2.1. 一对一连接:每当一个客户端想要去发起连接,服务器端就要 产生一个线程去处理这个连接,那么服务器端就需要产 生大量的线程去处理这些请求,当服务器产生过多的线程的时候,就会导致服务端卡顿或者奔溃。

2.2. 无用的连接:如果客户端建立连接之后一直保持连接却不发生任何有用的操作,那么服务器端就会有大量的线程被占 用,如果有大量的无用连接,就会导致服务端的线程资源产生浪费。

2.3. 阻塞:一旦发生阻塞,整个程序执行时间就会很长,导致程序执行效率低。

3. NIO的三大组件:Buffer、channel、selector

3.1. buffer:存储数据。

3.2. buffer底层是依靠数组来存储数据的。并且之针对基本数据类型来存储数据。

3.3. buffer针对八种基本类型提供了7个实现类:ByteBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer, DoubleBuffer,CharBuffer。其中没有boolean类型的实现类,可以考虑通过其他的类型来代替boolean。例如可以 用0表示flase,用1表示true。此时就可以利用ByteBuffer来实现传输过程。

3.4. 考虑到计算机底层是通过字节的形式来实现数据的存储,在网络传输的时候,本质上也是通过字节的形式传输,所以说 字节的形式用的比较多,重点掌握ByteBuffer。

3.5. 重要位置:position<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值