전체 글389 자바를 자바 26 : Multithreaded Programming with Java (2) Thread States 서버와 통신하는 스레드의 상태는 위와 같이 구성되게 된다. new : 지금 막 생성된 상태 runnable : 운영될 준비됨 blocked : 어떤 이유로 스레드가 코드를 실행하지 않고 막혀있음(어떤 코드 블락이나 리소스를 접근해야 하는 상황에서 다른 스레드가 해당 블락이나 리소스를 접근한 상태) waiting : 스레드가 기다리고 있는 상태이지만 다른 스레드가 notify나 notifyAll로 깨워줘야 한다. TIMED_WAITING : timeout이 걸려 있는 waiting으로 시간이 지나면 자동으로 깨어난다. TERMINATED : 스레드가 끝날때의 상태로 예전에는 stop을 사용해서 Deprecated 상태로 만들곤 하였다. 현재는 run이 끝나면 자동으로 TERMINA.. 2020. 12. 30. 자바를 자바 25 Chat Program with Multiple Users Multiple User을 지원하는 채팅 프로그램을 제작, 이번에는 UDP를 활용한 서버를 구현 MultiChatServer Manages Users client sends a message, server redirects the message to all other clients MultiChatClient Connects to the server Communicates with other clients public class MultiChatServer { HashMap clients; // 해쉬맵 생성, 여러개의 스레드가 동시에 접근 가능 //synchronizedMap(원래는 asynchronized) MultiChatServer() { .. 2020. 12. 30. 자바를 자바 24 (Networking with Java(3)) Background: TCP and UDP TCP(Transmission Control Protocol) and UDP(UserDatagram Protocol) TCP : reliable data transfer(신뢰할만한 데이터 전송) UDP : fast communication than rekliability, multicast and broadcast(신뢰보다는 속도 중심의 전송) TCP는 연결이 필요하고 UDP는 연결없이 일단 데이터 전송을 한다. TCP는 1:1 통신이고 UDP는 1:다 통신이다. TCP는 데이터가 보내진 순서대로 받는다. UDP는 보내진 순서와 관계없이 받을 수 있다. TCP는 신뢰있게 데이터가 보내진다. UDP는 데이터가 중간에 날아갈 수 있다. TCP는 속도가 UDP보다 느.. 2020. 12. 30. 자바를 자바 23 Background: processes and threads 컴퓨터를 키고 프로그램을 실행시키면 운영체제가 프로세스를 만들어준다. 이 프로세스가 프로그램을 돌리기 위한 자원을 분배하게 된다. 이때 중요한 것이 메모리로 프로그램 별로 메모리를 할당해주는 과정을 운영체제가 담당하게 된다. 그래서 작업관리자를 실행시키면 메모리를 프로그램별로 얼마나 할당해 주었는지 확인할 수 있다. 스레드 : 프로그램을 실행시키는 가장 작은 단위로 스케쥴러에 의해 독립적으로 관리된다. 각 프로세스 별로 적어도 하나의 스레드에서 여러개의 스레드를 가질 수 있다. 그래서 프로세스가 두 개이상의 스레드를 가지면 mulit-threaded process라고 부른다. 그림을 보다 싶이 하나의 프로세스를 보면 하나의 스레드에서 수십개의 .. 2020. 12. 30. 이전 1 ··· 85 86 87 88 89 90 91 ··· 98 다음