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

Anfield님의 프로필 이미지
Anfield

작성한 질문수

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

웹 페이지 Crawling 하기(리소스 다운로드_실습)

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

해결된 질문

작성

·

220

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()메서드가 실행이 되는 원리입니다.

Anfield님의 프로필 이미지
Anfield

작성한 질문수

질문하기