목록비동기 (5)
삶 가운데 남긴 기록 AACII.TISTORY.COM
REST Client REST API를 이용하여 서버가 리소스를 제공하는 경우 클라이언트 측에서 리소스를 받기 위해 REST Client API가 필요합니다. 그중 하나인 OkHttp 라이브러리를 이용해 JAVA용 REST Client를 구현하는 예제를 소개합니다. OkHttp OkHttp는 Square 에서 만든 간편하게 REST API나 http기반의 요청 응답을 처리할 수 있는 라이브러리입니다. 오픈소스로 공개된 소프트웨어입니다. https://github.com/square/okhttp GitHub - square/okhttp: Square’s meticulous HTTP client for the JVM, Android, and GraalVM. Square’s meticulous HTTP cli..
비동기 채널 비동기 채널은 non-blocking 방식으로 동작하는데 차이점은 스레드 풀에게 작업 처리를 요청하고 즉시 리턴한뒤 콜백 메소드를 호출하여 작업 완료 후 실행되는 코드들은 콜백 메소드에 담아서 처리하는 방식입니다. 비동기 채널 그룹 비동기 채널 그룹은 같은 스레드 풀을 공유하는 비동기 채널들의 모음이라고 할수 있습니다. 하나의 스레드 풀을 사용한다면 모든 비동기 채널은 같은 채널 그룹에 속해야 합니다. 채팅 서버(비동기 채널 방식) import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.AsynchronousChannelGroup; impor..
java.nio.channels.FileChannel 파일 채널을 통해 파일 읽기 쓰기를 할수 있습니다. 동기화 처리가 되어 있어서 멀티 스레드 환경에 안전하게 사용할 수 있습니다. 파일 생성 및 쓰기 import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; public class FileChannelWriteEx { ..
NIO java.nio: 다양한 버퍼 클래스들 java.nio.channels: 파일채널, TCP채널, UDP채널 등 java.nio.charset: 문자셋, 인코더, 디코더 java.nio.file: 파일 IO/NIO 차이점 IO는 입출력을 스트림 방식(단방향 입출력)이지만 NIO는 채널 방식(양방향 입출력)입니다. IO는 버퍼가 없으나 NIO는 버퍼를 제공합니다. IO는 비동기방식을 지원하지 않지만 NIO는 비동기 방식을 지원합니다. IO는 블로킹방식이지만 NIO는 블로킹과 논블로킹 모두 지원합니다. NIO는 불특정 다수의 클라이언트 연결을 비동기로 처리할 수 있어서 과도한 스레드 생성을 피할 수 있습니다. 그래서 NIO는 클라이언트 수가 많고 하나의 입출력이 오래 걸리지 않는 작업에 적합합니다. 반..
비동기 처리 console.log("A"); setTimeout(function(){console.log("B");}, 0); console.log("C"); 위 코드의 실행 결과는 A -> C -> B 순으로 표시됩니다. 비동기 작업은 콜백 함수로 작업을 예약 해놓고 다음 작업을 수행하기 때문입니다. 콜백 지옥 function sleep(callback){ setTimeout(function(){ callback(); },1000); } sleep(function(){ console.log("A"); sleep(function(){ console.log("B"); sleep(function(){ console.log("C"); }); }); }); Promise var promise = new Prom..