OKHTTP Singleton 对象在多线程系统中处理不同的 API 调用
Posted
技术标签:
【中文标题】OKHTTP Singleton 对象在多线程系统中处理不同的 API 调用【英文标题】:OKHTTP Singleton object to handle different API calls in a multi-threaded system 【发布时间】:2021-12-19 07:38:25 【问题描述】:我有一个多线程应用程序,它有多个用于不同目的的不同 API 调用。我的问题是,如果我创建一个 OKHTTP 的单例对象并且多个线程尝试同时使用不同的端点进行 API 调用,它会不会对我造成任何问题? 还是应该将单例对象用于相同的端点?
【问题讨论】:
【参考方案1】:OkHttpClient 对象可以安全地并发使用。这正是你应该做的。
https://square.github.io/okhttp/4.x/okhttp/okhttp3/-ok-http-client/#okhttpclients-should-be-shared
应该共享 OkHttpClients
当您创建单个 OkHttpClient 实例并将其重用于所有 HTTP 调用时,OkHttp 性能最佳。这是因为每个客户端都拥有自己的连接池和线程池。重用连接和线程可减少延迟并节省内存。相反,为每个请求创建一个客户端会浪费空闲池上的资源。
【讨论】:
以上是关于OKHTTP Singleton 对象在多线程系统中处理不同的 API 调用的主要内容,如果未能解决你的问题,请参考以下文章
ACE_TAO 010 单例模式(Singleton设计模式)