거꾸로 바라본 세상
NIO TCP blocking channel 소켓서버 & 클라이언트
Language/Java 2017. 3. 30. 12:29

NIO TCP blocking channel 소켓서버 & 클라이언트 서버 소켓 생성ServerSocketChannel sock = ServerSocketChannel.open();sock.configureBlocking(true);sock.bind(new InetSocketAddress(9190)); 요청기다림SocketChannel socketChannel = sock.accept(); 클라이언트 소켓 생성SocketChannel socketChannel = SocketChannel.open();socketChannel.configureBlocking(true);socketChannel.connect(new InetSocketAddress(9190)); 서버 or 클라이언트로부터 정보 받기socketC..

비동기 파일채널
Language/Java 2017. 3. 29. 17:33

비동기 파일채널 FileChannel의 read() write()는 입출력작업을 하는 동안 블로킹이 된다.그래서 UI 및 이벤트를 처리하는 스레드에서 이 메소드들을 호출하면 블로킹되는 동안 UI갱신이나 이벤트 처리를 할 수 없어 작업 스레드를 생성해서 처리해야한다. 그래서 NIO에서 불특정 다수 파일 및 대용량 파일의 입출력 작업을 위해 비동기 파일 채널(AsynchronousFileChannel)을 별도로 제공함 1. AsynchronousFileChannel 생성과 닫기- AsynchronousFileChannel은 두 가지 정적 메소드인 open()을 호출하여 얻을 수 있다. AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(Pa..

NIO
Language/Java 2017. 3. 29. 16:10

Io, nio 차이입출력방식 : 스트림방식 , 채널방식버퍼방식 : 논 버퍼, 버퍼비동기방식 : 지원안함, 지원블로킹/논블로킹 방식 : 블로킹방식, 블로킹/논블로킹모두 지원 스트림 vs 채널스트림 : 입력을 하기위해 입력 스트림을 생성하고 출력을 하기위해 출력 스트림을 생성해야함NIO(채널) : 채널은 양방향으로 입력과 출력이 가능. 입출력을 하기 위해 별도의 채널을 만들 필요가 없음. 버퍼 vs 논버퍼IO에서는 스트림이 1바이트를 쓰면 입력스트림이 1바이트를 읽는다. (이런 시스템은 대체로 느림)그래서 버퍼를 이용하여 복수 개의 바이트를 한꺼번에 입력받고 출력하는 것이 빠른 성능을 냄(보조 스트림 BufferedInputStream, BufferedOutputStream) IO는 스트림에서 읽은 데이터를..

[JAVA NIO] WatchService(와치서비스)
Language/Java 2017. 3. 24. 13:55

WatchService(와치서비스) - 디렉토리 내부에서 파일 생성, 수정, 삭제 등의 내용 변화를 감시하는데 사용. (파일변경 통지 매커니즘으로알려짐)ex) 텍스트 에디터 1. 생성WatchService watchService = FileSystems.getDefault().newWatchService(); Path 객체에서 register() 메소드에 watchService를 등록하고 어떤 변화(생성, 삭제, 수정)를 감시할 것인지 StandardWatchEventKinds을 지정한다. 2. 감시자 지정Path path = Paths.get("d:/test");path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE, StandardWatch..