해결된 질문
작성
·
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()메서드가 실행이 되는 원리입니다.