美文网首页
OkHttp(二):线程重用机制

OkHttp(二):线程重用机制

作者: ti天梦 | 来源:发表于2018-07-17 15:34 被阅读0次

    OkHttp(一):线程重用机制

    1、线程重用机制代码在Dispatcher类中;上一篇中我们了解到异步调用enqueue方法内部会调用executorService().execute(call)方法;executorService()就是实际的线程池的创建管理,用的是懒加载模式;实际是利用的ThreadPoolExecutor线程池来管理;

    线程池创建

    参数一:核心线程数--0;代表常驻线程为0

    参数二:最大线程数

    参数三:60s超时清理;代表任务处理完毕60s后如果还是没有任务,将清除运行中的线程,直到运行中的线程数和核心线程数相等

    参数五:同步队列

    2、经过上一篇我们直到,异步的Call实际会创建一个AsyncCall对象;内部执行的代码如下:在最后都会调用finished函数,用于通知dispatcher该任务执行完了;

    调用代码

    3、我们来看finished函数;

        三个重载方法,最终调用最后一个;

        a、将完毕的任务从runningAsyncCalls中移除,然后promoteCalls方法用于遍历readyAsyncCalls队列中符合条件的Call任务添加到线程池中处理;

    finished函数 promoteCalls函数

    4、综上所述,OkHttp内部的线程池实际是用ThreadPoolExecutor来管理线程的;每次任务执行完毕会告知dispatcher及时的将新的任务给线程池,否则60s后线程池的线程将会停止并清掉;以此来实现线程重用机制的

    相关文章

      网友评论

          本文标题:OkHttp(二):线程重用机制

          本文链接:https://www.haomeiwen.com/subject/ejwvpftx.html