반응형

Java 17

Java - NIO Buffer

Java NIO Java 1.4부터 도입된 NIO는 기존의 Java IO의 단점을 보완하기 위해 도입되었다. NIO는 Non-blocking이 아니라 Java New Input/Out의 약자로, 파일과 네트워크 데이터를 읽고 쓰는 API를 제공한다. 이는 기존의 Stream 기반의 입출력 대신 Buffer 기반으로 작동하고, Non-blocking을 지원하여 성능을 향상시켰다. Selector와 Channel이 도입되어 높은 성능이 보장된다. Java NIO 와 Java IO의 비교 Java NIO Java IO 데이터의 흐름 양방향 단방향 종류 Channel InputStream, OutputStream 데이터의 단위 buffer byte 혹은 character blocking 여부 non-blocki..

Java 2024.04.23

Java - OutputStream

Java IO - OutputStream InputStream과 동일하게 Closeable 인터페이스를 구현하고 있고 추가로 Flushable도 같이 구현하고 있다. 명시적으로 close도 가능하고, try-with-resources 사용이 가능하다. write시 바로 전송하지 않고 버퍼에 저장한 다음 일정량의 데이터가 모이면 한번에 전달한다. 만약 일정량의 데이터가 모이기 전에 바로 buffer에 있는 값을 전달하고 다음 로직을 처리해야 한다면 Flushable에서 제공하는 flush 메서드를 사용해서 buffer를 비우고 다음 로직을 수행한 후 원하는 결과를 내보낼 수 있다. import java.io.Closeable; import java.io.Flushable; import java.io.IOE..

Java 2024.04.23

Java - InputStream

Java IO - InputStream Java IO는 동기 Blocking으로 동작한다. Java 1.0 에서 처음 도입 되었으며 파일과 네트워크에 데이터를 읽고 쓸 수 있는 API들을 제공한다. byte 단위로 읽고 쓸 수 있는 stream이다. (InputStream과 OutputStream) InputStream InputStream은 Closable을 구현한다. 명시적으로 close하거나 try-with-resource 사용이 가능하다. read는 stream으로 데이터를 읽고, 읽은 값을 반환하고 -1 이라면 끝에 도달했다는 것을 의미하며, close는 stream을 닫고 더 이상 데이터를 읽지 않는다. import java.io.Closeable; import java.io.IOExcepti..

Java 2024.04.22

Java - CompletableFuture class

CompletableFuture CompletableFuture 클래스는 Future 인터페이스가 가진 한계점을 보완하기 위해 CompletionStage 인터페이스와 합쳐진 형태의 클래스로, Java 8부터 제공되는 클래스이다. Future와 다르게 외부에서 작업을 완료시킬 수 있고, 콜백 등록 및 Future 조합 등...이 가능하다. import java.util.concurrent.CompletionStage; import java.util.function.Supplier; public class CompletableFuture implements Future, CompletionStage { public static CompletableFuture supplyAsync(Supplier suppl..

Java 2024.04.21

Java - CompletionStage then* vs then*Async

CompletionStage에서 Async가 붙어있는 함수와 붙지 않은 함수의 차이는 무엇인가? CompletionStage의 제공되는 함수들에 같은 이름인데 Async가 붙어있는 함수가 있고 붙어있지 않은 함수들이 있는데 무슨 차이점이 있을까? 반환받은 Future가 Done인 경우 import com.example.webfluxstudy.basicReactiveProgramming.completableFuture.completionStage.thenAsyncSufix.Helper; import lombok.extern.slf4j.Slf4j; import java.util.concurrent.CompletionStage; @Slf4j public class CompletionStageThenAccept..

Java 2024.04.19

Java - CompletionStage Interface

CompletionStage CompletionStage는 일종의 파이프라인으로 각각의 함수를 연결하여 사용할 수 있다. 연산자들을 활용하여 비동기 task들을 실행하고 값을 변형하는 등 chaning을 이용한 조합이 가능하다. Future의 단점이였던 Exception 처리를 CompletionStage에서는 가능하다. import com.example.webfluxstudy.basicReactiveProgramming.completableFuture.completionStage.thenAsyncSufix.Helper; import lombok.extern.slf4j.Slf4j; @Slf4j public class CompletionStageExample { public static void main(..

Java 2024.04.19

Java - Future Interface

Future Interface 비동기적인 작업을 수행하고 해당 작업이 완료되면 결과를 반환하는 인터페이스 Future 인터페이스의 주요 메서드 import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; public interface Future { boolean cancel(boolean mayInterruptIfRunning); boolean isCancelled(); boolean isDone(); V get() throws InterruptedException, ExecutionException; V get(long time..

Java 2024.04.18
반응형