강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

Anfield님의 프로필 이미지
Anfield

작성한 질문수

Java TPC 실전프로젝트 (Java API 활용)

Socket(소켓)을 이용한 Multi-Chatting 만들기

스레드 관련 질문입니다.

작성

·

191

0

자바 문법 관련 질문입니다. 

 

1.

서버  클래스에는 inner Class로 스레드를 상속한 ServerReceiver 클래스가 만들어 집니다. 이 클래스를 

ServerReceiver thread = new ServerReceiver(socket);을 하고 thread.start(); 해서 실행시킵니다. 

 

채팅 클래스에서는 inner Class에 static이 붙습니다. 이 차이가 무엇인지? 

 

2.

채팅클래스 관련. 

주고 받고 하는 두 개의 스레드를 start()(==run()) 메서드를 실행시킬 때

Thread sender = new Thread(new ClientSender(socket,name));

Thread receiver = new Thread(new ClientReceiver(socket));

sender.start();

receiver.start();

이전에 서버 클래스에서는 ServerReceiver thread = new ServerReceiver(socket); 이런식으로 호출을 해서 사용했습니다. 

Thread를 상속했기에 Thread로 받을 수 있다는 점은 이해했으나

ClientSender sender=new ClientSender(socket,name);

ClientSender receiver =new ClientSender(socket);

이렇게 해도 되는 부분이 아닌지? 궁금합니다~

 

3. 

클라이언트에서는 메인 클래스에서 실행되는 반면에 서버 클래스는 메인에서 자기 자신의 클래스를 호출하여 메서드를 실행시킵니다. 

public static void main(String[] args) {

new Project06F_MultiChatServer().start();

}

이 start()메서드 안에서 이전에 질문했었던 (static이 붙지 않은)Inner class를 호출합니다. 

이 부분도 메인  메서드에서 굳이 자기 자신을 new로 호출해서 메서드를 실행시키는 이유가 궁금합니다. 

 

4.

그리고 

Project06F_MultiChatServer 변수 = new Project06F_MultiChatServer();

변수.start(); 이렇게 하지 않아도 되는 이유도 궁금합니다. 

 

사실 1번과 2번 질문이 이어지는 질문인거 같기는 하지만 일단 모르는 부분이기에 질문드립니다. 

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
Anfield님의 프로필 이미지
Anfield

작성한 질문수

질문하기