学会从线程模型和IO模型剖析应用程序和设计实现你的程序

124. 学会从线程模型和IO模型剖析应用程序

线程模型、IO模型直接决定应用程序的运行状态,熟知一个应用程序的两个模型就具备了对其时时刻刻运行状态的观测能力。

关于线程模型的同步、异步、阻塞、非阻塞——主体对象:函数调用线程,作用对象:一个函数或一段程序执行逻辑

  • 线程同步调用:调用目标是一个函数,调用动作的发起者是调用线程,被调函数的执行者也是调用线程

  • 线程异步调用:调用目标是一个函数,调用动作的发起者是调用线程,被调函数的执行者是其他线程

  • 线程阻塞调用:调用目标是一个函数,调用动作的发起者是调用线程,被调函数的执行者是当前调用线程或其他线程,当前调用线程等待被调函数执行结束;调用线程负责发起,即时要求结果

  • 线程非阻塞调用:调用目标是一个函数,调用动作的发起者是调用线程,被调函数的执行者是其他线程,当前调用线程不等待被调函数执行结束,调用动作发出后立即结束,不等待结果;调用线程只管发起,不即时要求结果

阻塞、非阻塞强调的是调用线程是否等待获得函数执行结果,等待结果即为阻塞,不等待即为非阻塞,阻塞可以是同步调用,也可以是异步调用的,非阻塞一定是异步调用的,即由其他线程完成函数执行。

关于IO模型的同步、异步、阻塞、非阻塞——主体对象:发送请求时使用的socket连接

  • 同步IO:一请求一响应式IO,如HTTP、JDBC等几乎所有网络协议都是同步IO模型,即客户端请求、服务端回应的一请求一响应式请求模型。

  • 异步IO:同异步调用,被调函数是一段IO请求逻辑

  • 阻塞IO:一请求一响应独占连接式IO,请求发出后直到对端返回响应才算完成一个IO过程,连接才会得释放,此期间连接被独占,直到一请求一响应IO过程完成

  • 非阻塞IO:同非阻塞调用,被调函数是一段IO请求逻辑

125. 学会从线程模型和IO模型去设计实现你的程序

一个良好的程序一定有一组清晰且高效的线程模型和IO模型。

一个应用程序应当首先是线程模型和IO模型,再次是设计模式、领域驱动、内聚解耦合。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值