网络编程的本质是进程间通信Java 网络编程实战(二) - Unix的I/O模型解析_Java 2 通信的基础是IO模型

输入流

Java 网络编程实战(二) - Unix的I/O模型解析_Java_02

文件,Java对象,字符串都可以是数据源

输出流

Java 网络编程实战(二) - Unix的I/O模型解析_Java_03

3 java.io 家族

Java 网络编程实战(二) - Unix的I/O模型解析_Java_04

字符流

Java 网络编程实战(二) - Unix的I/O模型解析_Java_05
Java 网络编程实战(二) - Unix的I/O模型解析_Java_06

字节流

Java 网络编程实战(二) - Unix的I/O模型解析_Java_07
Java 网络编程实战(二) - Unix的I/O模型解析_Java_08

4 设计模式 - 装饰器模式

Java 网络编程实战(二) - Unix的I/O模型解析_Java_09

  • 奶茶店里面的装饰器模式(珍珠只是装饰)
    Java 网络编程实战(二) - Unix的I/O模型解析_Java_10
Socket也是一种数据源Java 网络编程实战(二) - Unix的I/O模型解析_Java_11
  • Socket是网络通信的端点
    Java 网络编程实战(二) - Unix的I/O模型解析_Java_12
Unix中的Socket是什么

◆ Unix系统中一切皆是文件
◆ 文件描述符表是已打开文件的索引

◆ 每个进程都会维护一个文件描述符表

通过socket发送数据

Java 网络编程实战(二) - Unix的I/O模型解析_Java_13

同步/异步/阻塞/非阻塞

Java 网络编程实战(二) - Unix的I/O模型解析_Java_14

  • 排列组合Java 网络编程实战(二) - Unix的I/O模型解析_Java_15

同步

面对面表白女生时为同步,持续性等待!
Java 网络编程实战(二) - Unix的I/O模型解析_Java_16

A线程:
A要去做事情A1,A2, A3。
如果A1正在执行的情况下A2, A3都不能执行,这叫做同步,也叫阻塞。A2必须等A1执
行完毕之后才能执行。

异步

女孩子考虑考虑,下次告诉你
Java 网络编程实战(二) - Unix的I/O模型解析_Java_17
Java 网络编程实战(二) - Unix的I/O模型解析_Java_18

A1正在执行的情况下,A2和A3也可以执行。这叫做异步、非阻塞。

阻塞调用

表白后,茶不思饭不想啥都不干就等待!
Java 网络编程实战(二) - Unix的I/O模型解析_Java_19

非阻塞调用

  • 表白后,该干嘛干嘛
    Java 网络编程实战(二) - Unix的I/O模型解析_Java_20

等待结果前,调用方的状态

同步阻塞

  • 一直等待,不做别的事

Java 网络编程实战(二) - Unix的I/O模型解析_Java_21

同步非阻塞

等待时,还想着自己的bug没解决呢!
Java 网络编程实战(二) - Unix的I/O模型解析_Java_22

异步阻塞

表白后离开,等待手机消息,但茶不思饭不想
Java 网络编程实战(二) - Unix的I/O模型解析_Java_23

异步非阻塞

  • 离开后,该干嘛干嘛
    Java 网络编程实战(二) - Unix的I/O模型解析_Java_24
复用线程 -线程池Java 网络编程实战(二) - Unix的I/O模型解析_Java_25
  • java提供的线程池
    Java 网络编程实战(二) - Unix的I/O模型解析_Java_26

  • java提供的创建线程池的方法
    Java 网络编程实战(二) - Unix的I/O模型解析_Java_27