小编kek*_*lab的帖子

Java 11 上的 SocketTimeout 而不是 Java 8

当我的 Java 程序与 Java 8 和 Java 11 一起运行时,我有一个非常奇怪的行为差异。

我正在使用 MSGraph API (1.7.0) 对 Onedrive API 进行多次调用。为了进行这些调用,我使用了 4 个并行线程来同步硬盘上的大量文件(大约 1000 个)。

当我使用 Java 8 执行程序时,我没有发现任何异常。当我使用 java 11 执行它时,我在大约 60% 的调用中收到了 Socket Timeout Exception。

要配置IGraphServiceClient,我使用的是默认配置。就我而言,在这种情况下,HTTP 提供程序是 OKHttp3。

有没有人经历过这样的事情?

[更新-1]

这些是我测试过的环境:

  • Oracle 的 JDK 1.8.0_192 --> 完美。在大约 400 次调用中没有错误
  • Openjdk 11.0.7 和 Oracle 的 jdk 11.0.3 --> 大量的 Sokcet 超时异常

在此您有堆栈跟踪:

com.microsoft.graph.core.ClientException: Error during http request
    at com.microsoft.graph.http.CoreHttpProvider.sendRequestInternal(CoreHttpProvider.java:422) ~[easybox-0.1-SNAPSHOT.jar:?]
    at com.microsoft.graph.http.CoreHttpProvider.send(CoreHttpProvider.java:204) ~[easybox-0.1-SNAPSHOT.jar:?]
    at com.microsoft.graph.http.CoreHttpProvider.send(CoreHttpProvider.java:184) ~[easybox-0.1-SNAPSHOT.jar:?]
    at com.microsoft.graph.http.BaseStreamRequest.send(BaseStreamRequest.java:85) ~[easybox-0.1-SNAPSHOT.jar:?]
    at com.microsoft.graph.requests.extensions.DriveItemStreamRequest.get(DriveItemStreamRequest.java:55) …
Run Code Online (Sandbox Code Playgroud)

java java-8 okhttp java-11

11
推荐指数
1
解决办法
1219
查看次数

标签 统计

java ×1

java-11 ×1

java-8 ×1

okhttp ×1