使用Java 8。
我有一个Logger类,每当需要记录日志时都会调用一个API。我意识到,如果API配置不良,或者API没有响应,我的日志操作会花费很长时间。
同步记录日志的示例:
public void debug(String message) {
MDC.clear();
MDC.put(SOME_KEY, "SOME_VALUE");
super.debug(message);
MDC.clear();
}
我能够确定问题出在这里,因为如果我将所有内容注释掉并停止记录或执行任何操作,一切都会像应该的那样快速运行:
public void debug(String message) {
// MDC.clear();
// MDC.put(SOME_KEY, "SOME_VALUE");
// super.debug(message);
// MDC.clear();
}
我认为可以将此调用变为异步调用,因为我不关心它是同步记录的:
public void debug(String message) {
CompletableFuture.runAsync(() -> {
MDC.clear();
MDC.put(SOME_KEY, "SOME_VALUE");
super.debug(message);
MDC.clear();
});
}
但是,对于我的主应用程序来说,这个异步调用在性能上和同步调用一样糟糕。我错过了什么吗?