【发布时间】:2021-12-19 07:38:25
【问题描述】:
我有一个多线程应用程序,它有多个用于不同目的的不同 API 调用。我的问题是,如果我创建一个 OKHTTP 的单例对象并且多个线程尝试同时使用不同的端点进行 API 调用,它会不会对我造成任何问题? 还是应该将单例对象用于相同的端点?
【问题讨论】:
标签: java multithreading api rest okhttp
我有一个多线程应用程序,它有多个用于不同目的的不同 API 调用。我的问题是,如果我创建一个 OKHTTP 的单例对象并且多个线程尝试同时使用不同的端点进行 API 调用,它会不会对我造成任何问题? 还是应该将单例对象用于相同的端点?
【问题讨论】:
标签: java multithreading api rest okhttp
OkHttpClient 对象可以安全地并发使用。这正是你应该做的。
https://square.github.io/okhttp/4.x/okhttp/okhttp3/-ok-http-client/#okhttpclients-should-be-shared
应该共享 OkHttpClients
当您创建单个 OkHttpClient 实例并将其重用于所有 HTTP 调用时,OkHttp 性能最佳。这是因为每个客户端都拥有自己的连接池和线程池。重用连接和线程可减少延迟并节省内存。相反,为每个请求创建一个客户端会浪费空闲池上的资源。
【讨论】: