• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

쓰레드 관련해서 질문합니다.

22.02.05 17:16 작성 조회수 177

0

Runnable r=new DownloadBroker(dPath, fileName);
			Thread dLoad=new Thread(r);
			dLoad.start();
			for(int i=0;i<10;i++) {
				try {
					Thread.sleep(1000);
				} catch (Exception e) {
					e.printStackTrace();
				}
				System.out.print(""+(i+1));
			}

 

쓰레드 관련해서 이해가 부족해서 이 부분이 이해가 되지 않습니다.

dLoad.start(); 하면 다운로드가 이루어지고 

1. Thread.sleep(1000);은 메인 쓰레드를 10초 후에 종료한다는 뜻인거 같은데, 이렇게 하는 이유가 있나요? 

 

2. Runnable 객체를 만들어 Thread 객체에 생성자로 담은 후 dLoad.start();하는 과정에서 Runnable객체는 어떤 의미이며, Thread 객체를 생성(이것도 궁금)해서 dLoad.start()하는 부분이 궁금합니다. 

 

+ 자바 기본 강좌 Stream에 관련된 부분도 만드시면 바로 수강하겠습니다. InputStream, BufferedReader 등등

조금 어렵다고 생각이 드네요. 대충은 알겠는데 ㅠㅠ

 

답변 1

답변을 작성해보세요.

2

두개의 스레드가 서로 cpu의 시간을 공평하게 얻기위해서 main 스레드를 1초(1000)정도 쉬게해주는것입니다. 서로 스위칭이 되기위한것이라고 생각하시면 됩니다.

Runnable 인터페이스는 스레드가 해야할 작업 객체를 만드는 인터페이스입니다.

Thread를 만든 후 이 Thread에 Runnable인터페이스를 구현한 객체를 넣어주고 start()를 하면 run()메서드가 실행이 되는 원리입니다.