网上观点 Logger是异步,System.out.prinlt是同步
找半天资料发现还是理解不深刻。
自我理解 按照同步还是异步的方式(也可以从功能的完善程度等进行分析,这里不做赘述。)
1 System.out.print 里面用了同步锁 用的是java运行程序的流 会锁住 ,举栗子:多个线程同时使用这个方式打印日志,会一个一个执行,因为里面是同步sych关键字锁住了,那么好了,如果是web项目,每个http/https请求是一个单独线程,都用这个,那会很慢,因为会抢锁。
2 第二种log的方式,log在http请求的线程里,各自为政,不会抢一个锁。
补充:
Log的方式基于配置 开启异步日志写入,否则默认是同步日志写入
即 logback或log4j进行异步日志配置 参考二者官网 才使用异步日志写入
综上所述,异步还是同步,归根结底是抢锁导致占用资源的问题,所以,用Logger。