논블록
-
자바 네트워크 프로그램, 블록과 논블록프로그래밍/자바 2020. 2. 22. 00:22
멀티스레드 프로그래밍에서 메서드나 객체에 대해 동기화를 할 경우 다른 누군가 그 메서드를 참조하고 있다면 “해당 메서드는 블록 된다”, 라는 표현을 사용한다. ‘가로막다’의 의미로 사용되는 것인데, 동시성 제어(변수의 무결성, 기타 등등)를 위하여 필요한 것이다. 네트워크 프로그래밍으로 넘어와 이야기를 해 보겠다. 네트워크 프로그래밍에선 입출력 작업이 필요하다. 입출력 작업엔 블록 방식과 논블록 방식이 존재한다. IO와 NIO이다. 자바에서 사용하는 블록방식의 입력(INPUT) 부분은 다음과 같다. while( (read = is.read(packet)) != -1){ System.out.println("receive message, from server : " + new String(packet, 0,..
-
자바 네트워크 프로그래밍, 동기와 비동기프로그래밍/자바 2020. 2. 21. 22:01
이기종 시스템 간의 연동, 통신을 위해서는 네트워크 프로그래밍이 꼭 필요하다. 자바나 기타 언어로 네트워크 연동 프로그램을 만들고자 한다면 어떻게 접근해야 할까? 네트워크 프로그래밍에서 말하는 동기와 비동기에 대해 이야기해 보고자 한다. 먼저 생각해 볼 문제는 시스템(or 노드)간 통신을 할 때 동기방식으로 할 것인가? 비동기 방식으로 할 것인가? 정하는 문제다. 쉬운 이해를 위해 동기 방식과 비동기 방식의 예를 들어보겠다. 동기방식은 A노드와 B노드 사이의 작업 처리 단위(transaction)를 동시에 맞추겠다는 뜻이다. ‘얄순이에게 예를 보자. 1) 말 춘계좌는 오천원을 뺄 생각을 하고 있다. 2) 말춘계좌는 얄 순계좌에게 오천 원을 전송한다. 3) 얄 순계좌는 오천 원이 수신되었단 걸 인지하고 말..