https://systemdata.tistory.com/21
System.out.println 메소드는 실무에서 `절대 사용하지마라.`
목차개요System.out.println 무엇인가?왜 사용해서는 안되는가?로그를 남기면 안되는 것인가?결론1. 개요프로그래밍을 처음 접하면 System.out.println(”Hello World”);같이 콘솔에 출력하는 것을 배우게
systemdata.tistory.com
실무에서 사용하면 안되는 이유.
- 동기화된 블로킹 I/O 방식이기 때문에 성능 저하 문제 발생. (오버헤드 발생)
=> Log4j, SLF4J 같은 비동기 로깅 프레임워크 사용!
I/O를 비동기적으로 처리하고, 멀티스레드 환경에서 성능을 더 효과적으로 관리한다.
- 로그 레벨을 지정할 수 없기 때문 ( TRACE > DEBUG > INFO > WARN > ERROR > FATAL )
- 로그 정보를 남길 수 없기 때문 (날짜, 시간, 로직에 대한 정보 등..)
* System.out의 내부동작
System.out은 Java의 표준 출력 스트림으로 PrintStream 클래스의 인스턴스.
PrintStream 은 OutputStream 을 확장하여 텍스트와 바이트 데이터를 출력 스트림에 기록.
PrintStream 의 주요 메서드들은 synchronized 로 정의되어 있어, 동기화된 방식으로 실행.
priintln() 메서드 호출 ( autoflush수행 ) => PrintStream의 synchronized로 구성된 write() 메서드가 호출.
즉, 하나의 스레드에서 출력 작업이 진행되는 동안 다음 스레드는 이 출력 메소드에 접근 불가. (블로킹)
* 스트림 클래스 : 데이터의 연속적인 흐름을 다루기 위해 설계된 클래스.
- 바이트 스트림 계층 (1바이트씩 전송) InputStream / OutputStream 클래스
바이트 단위로 데이터를 처리. (파일, 이미지, 네트워크 소켓 등 바이너리 데이터를 읽고 쓸 때)
InputStream / OutputStream 클래스
- 문자 스트림 계층 (2바이트씩 전송)
문자 단위로 데이터를 처리. (텍스트 데이터를 읽고 쓸 때)
Reader / Writer 클래스
https://www.tcpschool.com/java/java_io_stream
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
23. 입출력 스트림 (InputStream, OutputStream) [ JAVA ]
스트림(Stream) > 스트림(Stream) 이란, '데이터의 흐름'을 의미한다. 프로그램은 외부에서 데이터를 읽거나 외부로 데이터를 출력하는 작업이 빈번하게 일어나는데, 이때 데이터는 어떠한 통로를 통
velog.io
https://m.blog.naver.com/pjok1122/221505593049
자바(Java) java.io.File 객체, 스트림(Stream) 클래스
1. java.io - 자바로 입출력 기능을 구현하는 데에 필요한 다양한 클래스를 포함하고 있는 패키지 - File ...
blog.naver.com
'Java > 공부공부' 카테고리의 다른 글
[JAVA] port연결 확인 스케줄러 (ScheduledExecutorService, CountDownLatch) (0) | 2024.11.25 |
---|---|
[JAVA] JAR & WAR (0) | 2024.11.16 |
[Java] 자바에서 리눅스 명령어 실행 (JSch , Session , ChannelExec ) (0) | 2024.11.06 |
[Java] Stream API (Collectors 클래스) (0) | 2024.10.29 |
[JAVA] objectMapper, modelMapper (0) | 2024.10.25 |