【发布时间】:2019-05-10 14:20:24
【问题描述】:
使用 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();
});
}
但是对于我的主应用程序而言,这种异步调用在性能方面与同步调用一样糟糕。我错过了什么?
【问题讨论】:
标签: java performance asynchronous