2024/05/20 6

자바의 volatile 키워드

volatile 키워드의 역할과 사용처에 대해 설명해주세요.volatile 키워드의 역할volatile 키워드는 자바에서 변수의 값이 여러 스레드에 의해 즉시 일관되게 보이도록 보장하기 위해 사용됩니다. 이는 멀티스레딩 환경에서 변수의 가시성 문제를 해결하는 데 중요한 역할을 합니다.주요 역할가시성 보장:volatile 키워드가 선언된 변수는 각 스레드가 이 변수를 읽을 때 항상 최신 값을 읽도록 보장합니다. 이는 변수 값이 캐시되지 않고, 항상 메인 메모리에서 읽도록 하기 때문에 가능합니다.재정렬 방지:컴파일러와 JVM은 최적화를 위해 명령어의 순서를 재정렬할 수 있습니다. volatile 키워드는 이러한 재정렬을 방지하여 변수의 읽기와 쓰기 순서가 보장되도록 합니다.volatile 키워드의 사용처간단..

[프래피티] 2024.05.20

자바의 ThreadLocal

ThreadLocal의 기본적인 작동 원리와 주로 어떤 시나리오에서 사용되는지 설명해주세요.ThreadLocal의 기본 작동 원리ThreadLocal은 자바에서 각 스레드가 독립적으로 값을 저장하고 읽을 수 있게 해주는 클래스입니다. 이는 스레드마다 고유한 변수를 가질 수 있게 하여, 여러 스레드가 동시에 접근해도 데이터의 일관성을 유지할 수 있습니다.기본 작동 원리ThreadLocal 클래스: ThreadLocal 클래스는 각 스레드마다 별도의 저장소를 제공합니다. 스레드가 ThreadLocal 변수를 읽거나 쓸 때, 실제로는 스레드 내부의 고유한 저장소에서 값을 가져오거나 저장합니다.get() 메소드: 현재 스레드의 로컬 변수 값을 반환합니다. 만약 값이 설정되어 있지 않으면 초기값을 반환합니다.se..

[프래피티] 2024.05.20

System.out.println()

System.out.println() 메소드를 사용할 때 성능에 어떤 영향을 주는지 설명해주세요.System.out.println() 메소드는 자바 프로그램에서 콘솔에 문자열을 출력하는 데 사용됩니다. 그러나 이 메소드의 사용이 성능에 미치는 영향은 여러 측면에서 고려될 수 있습니다. 다음은 System.out.println() 사용 시 성능에 미치는 영향을 설명한 내용입니다:성능 영향 요소I/O 오버헤드설명: System.out.println()은 표준 출력 스트림인 콘솔에 데이터를 출력합니다. 이 출력 작업은 I/O 작업으로 분류되며, 디스크 또는 네트워크 I/O보다 빠르지만 여전히 상대적으로 느린 작업입니다.영향: 빈번한 콘솔 출력은 프로그램의 전체 성능을 저하시킬 수 있습니다. 특히, 루프 내에서..

[프래피티] 2024.05.20

자바의 synchronized

synchronized 키워드는 무엇이고 어떤 역할을 하는지 설명해주세요. 그리고 synchronized 블록과 메서드를 어떻게 사용하는지 알려주세요. 해당 키워드를 사용하는 이유는 무엇일까요?synchronized 키워드는 자바에서 동기화(synchronization)를 위해 사용되는 키워드입니다. 동기화는 멀티스레드 환경에서 여러 스레드가 동시에 하나의 공유 자원에 접근할 때 발생할 수 있는 문제를 방지하기 위해 사용됩니다. synchronized 키워드는 특정 코드 블록이나 메서드를 한 번에 하나의 스레드만 접근할 수 있도록 합니다.역할과 개념역할동시성 제어: 여러 스레드가 동시에 접근하여 발생할 수 있는 데이터 불일치와 같은 문제를 방지합니다.원자성 보장: 동기화된 블록이나 메서드 내의 코드가 하..

[프래피티] 2024.05.20

자바의 NIO

자바 NIO의 기본 개념과 그 주요 특징들에 대해 설명해주세요.자바의 New Input/Output(NIO)는 기존의 표준 I/O(java.io 패키지)를 보완하고 확장하기 위해 도입된 API로, 특히 높은 성능과 확장성을 요구하는 애플리케이션에 유용합니다. 자바 NIO는 기본적으로 블로킹 I/O 대신 비블로킹 I/O를 사용하여 더 나은 성능을 제공합니다. 여기서는 자바 NIO의 기본 개념과 주요 특징들을 자세히 설명하겠습니다.1. 기본 개념채널 (Channel)채널은 데이터가 읽히거나 쓰여지는 추상적인 개념입니다. NIO에서는 모든 I/O 작업이 채널을 통해 수행됩니다. 예를 들어, 파일 채널(FileChannel)이나 소켓 채널(SocketChannel)이 있습니다.채널은 비블로킹 모드에서 작동할 수..

[프래피티] 2024.05.20

Blocking IO / Non-Blocking IO

Blocking IO와 Non-Blocking IO의 개념 및 동작 방식에 대해 설명해주세요.Blocking IO와 Non-Blocking IO 개념 및 동작 방식1. Blocking IO (블로킹 IO)개념:입출력 작업(예: 파일 읽기/쓰기, 네트워크 요청)이 완료될 때까지 호출한 스레드가 대기하는 방식입니다.작업이 완료되면 결과를 반환하고, 그동안 스레드는 다른 작업을 수행할 수 없습니다.동작 방식:스레드가 입출력 작업을 요청합니다.커널은 해당 작업을 처리합니다. (디스크 접근, 네트워크 데이터 전송 등)작업이 완료될 때까지 스레드는 대기 상태가 됩니다. (Blocked)작업이 완료되면 커널은 결과를 스레드에 반환하고, 스레드는 다시 실행 가능 상태가 됩니다. (Runnable)특징:구현이 간단하고 ..

[프래피티] 2024.05.20