【OkHttp3源代码分析】(二)Request的enqueue

本文分析了OkHttp3中enqueue方法的执行流程,详细讲解了如何将Callback接口封装到AsyncCall类中,以及AsyncCall如何作为Runnable在内部线程池中执行。enqueue方法的异步特性及Dispatcher类的enqueue方法在源码层面进行了探讨。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

如果没有阅读本系列文章的第一篇,请先阅读:

【OkHttp3源代码分析】(一)Request的execute

因为这两者之间是有关联的!

enqueue执行流程源代码分析

先来看看源代码:

  @Override 
  public void enqueue(Callback responseCallback) {
    enqueue(responseCallback, false);//继续调用下面一层
  }

  void enqueue(Callback responseCallback, boolean forWebSocket) {
    synchronized (this) {
  //跟execute一样,防止多个子线程同时调用执行的方法。
      if (executed) throw new IllegalStateException("Already Executed");
      executed = true;
    }
    client.dispatcher().enqueue(new AsyncCall(responseCallback, forWebSocket));//重点!
  }

看到重点的那一行:

client.dispatcher().enqueue(new AsyncCall(responseCallback, forWebSocket));//重点!

我们发现,它将我们的Callback接口封装到一个新的类AsyncCall中去。

我们来看看它的代码:

final <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值