NIO 에 대해서 잘 아시는 분께 질문드립니다.
조으다
현재 NIO 에 대해서 공부하고 있는데요..
서버를 동작 시키고, 무한 루프를 돌면서
SelectionKey 의 이벤트(접속,수신,송신)에 따라 분기문을 작성하는 기본적인 코드를 구현했는데요..
접속 맟 수신의 경우 네트워크 단에서 Indication 메세지가 발생함에 따라 이벤트가 발생하여
해당 소켓 또는 소켓 채널을 이용하여 accept 나 read 를 해주면 이벤트가 해제 되지만..
송신의 경우 어떤식으로 동작하는지 이해가 되지 않습니다.송신의 경우도 NIO 라 데이터를 전송하다가 다쓰기도 전에 return 될 수도 있을텐데요..
송신의 경우 어떤식으로 데이터를 write 하는지..
또한 그러한 예제 코드가 있는지 알고 싶습니다.간단히 제 질문을 정리하자면..
NIO에서 데이터를 write 하는 부분이 어떤식으로 동작하는지, 설명해주시면 감사하겠습니다.
그럼 ^^
-
예그리나
Thread Pool을 사용한다면 NIO 를 사용하는 이유가 사라지지 않습니까?
-
바론
저두 언급하신 NIO 책도 보고 검색엔진에서 나오는 일부 예제들도 봤지만.. isWritable () 을 사용하는것을 못봤습니다. 물론 언급하신 NIO 책에서도 못본것 같습니다. 그리고, NIO 의 좀 더 빠른 성능을 위해서는 read 도 스레드풀로 해결해야 하지 않을까요?? 아무튼.. 어느분이 시원한 대답을 해주셨으면 ㅡㅜ
-
분홍이
위에서 말한건 Client 측면입니다.
Client 의 Thread issue 상관 없잖아요``;
위 설명한 예제가 나오고 다음 chapter 에서 앞의 예제들이 완벽하지 않아
뭔가 해결책을 제시하는 것 같은데 그 부분 까지는 안봤습니다.
저두 거기 할 차례거든요-_-ㅎㅎ
저두 공부 하는 입장이니 100프로 믿지 마시고 책한번 보세요``; -
모드니
안녕하세요(_ _); 요 몇일 NIO 를 공부하고 있는 학생입니다.
일반 IO 로 작성시 Blocking 되는 부분을 Thread 를 돌림으로써 해결하잖아요~
자바 I/O & NIO 네트워크 프로그래밍/김성박, 송지훈 님이 집필 하신 NIO 예제에서도
같은 방법으로 사용 하더라구요~
read는 main Thread 로 하고 wirte 는 새로운 Thread 로 말이죠.
책을 정독 한게 아니라 이방법 밖에 없다 라고는 못하겠네요.
제가 봤던 페이지에 -
텃골돌샘터
NIO 프로젝트를 했는데도 기억이 나질 않네요. 넘 오래전 일이라 -_-;;