멀티 스레드 환경에서 System.out.println()를 사용하게 되면,
하나의 스레드가 println() 이 끝날때까지 대기해야한다.
이로 인해 프로그램 소요시간이 길어질 수 있으며, 성능을 저하시킬 수 있다.
보통 자바 언어를 처음 배우기 시작할때 "Hello World"를 콘솔에 출력하는 것을 배운다.
System.out.println() 이란?
- 자바 언어로 프로그래밍할 때 디버깅 용도로 콘솔에 출력하는 메소드
근데, 실무에서는 System.out.println()을 사용하지 말라고 한다.
왜 사용하지 말라고 할까?
- 가장 큰 이유는 '성능 이슈'가 있다.
println() 메소드를 찾아가면 아래와 같이 synchronized 블록으로 구현되어있는 것을 볼 수 있다.
synchronized 블록으로 인해 lock이 걸리게 된다.
또한 synchronized 블록안에 호출된 newLine() 함수를 찾아가보면
위 함수 역시 try 블록 안에 synchronized 키워드로 구현되어있다.
자바 멀티 스레드 환경일 때 락이 발생하여, 하나의 스레드가 println() 이 끝날때까지 아무 일을 실행할 수 없고
대기해야 하기에 성능을 저하시킬 수 있다.
정리
* 운영 환경 시스템에서는 System.out.println() 메소드를 사용해서는 안된다.
* 로그를 남기고 싶다면 logger를 사용하도록 하자.
'Java' 카테고리의 다른 글
[Java] hashcode() (feat. equals()) (1) | 2023.11.22 |
---|---|
[Java] == vs. equals() (1) | 2023.11.22 |
[Java] Java 실행 옵션에 대해서 알아보자! (feat. GC) (0) | 2023.11.21 |
[Java] try-with-resources 를 사용해보자! (0) | 2023.11.20 |
[Java] 객체(object) vs. 클래스(class) vs. 인스턴스(instance) (0) | 2023.10.08 |