• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

스레드 관련 질문입니다.

22.02.08 11:42 작성 조회수 107

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번 질문이 이어지는 질문인거 같기는 하지만 일단 모르는 부분이기에 질문드립니다. 

답변 0

답변을 작성해보세요.

답변을 기다리고 있는 질문이에요.
첫번째 답변을 남겨보세요!