📚 기본미션 : p. 550 [직접 해보는 손코딩] 코딩 과정 및 실행 결과 캡쳐하기
소스코드
public class AutoSaveThread extends Thread{
public void save(){
System.out.println("작업 내용을 저장함.");
}
@Override
public void run(){
while(true){
try{
Thread.sleep(1000);
}catch (InterruptedException e) {
e.printStackTrace();
break;
}
save();
}
}
}
public static void main(String[] args) {
AutoSaveThread autoSaveThread = new AutoSaveThread();
autoSaveThread.setDaemon(true);
autoSaveThread.start();
try{
Thread.sleep(3000);
}catch (InterruptedException e){
}
System.out.println("메인 스레드 종료");
}
실행결과
1초 주기로 데몬 스레드인 AutoSaveThread의 save() 메소드가 호출되어 "작업 내용을 저장함." 이 출력된다. 3초가 되는 시점에 "메인 스레드 종료" 가 출력되면서 메인 스레드가 종료되고, 데몬 스레드 역시 자동으로 강제 종료.
📚 선택미션 : p. 539 문제 2번 풀고, 풀이 과정 설명하기
문제
=> runnable 을 구현한 경우는 바로 start가 불가하므로 Thread 객체를 생성 후 매개변수로 MusicRunnable 인스턴스를 넣어준다.
=> Thread를 상속받는 MovieThread 클래스 생성
=> Runnable은 인터페이스 이므로 구현! (implements)
이 구현 클래스 내에서 Runnable의 메소드 run()을 재정의(Override)하여 사용해야 한다.
실행결과
소스코드
public class ThreadExample {
public static void main(String[] args){
Thread thread1 = new MovieThread();
thread1.start();
Thread thread2 = new Thread(new MusicRunnable());
thread2.start();
}
}
public class MusicRunnable implements Runnable{
@Override
public void run(){
for(int i = 0; i < 3; i++){
System.out.println("음악을 재생합니다.");
try{
Thread.sleep(1000);
}catch (InterruptedException e){
}
}
}
}
public class MovieThread extends Thread{
@Override
public void run(){
for(int i = 0; i < 3; i++){
System.out.println("동영상을 재생합니다.");
try{
Thread.sleep(1000);
}catch (InterruptedException e) {
}
}
}
}
벌써 4주차가 끝나고 다음주는 휴가!
휴가는 안 가지만 마침 회사가 바쁜 시기라 다행이라 생각했다,,
(억지로라도) 이렇게 꾸준히 계획에 맞춰 공부하니까 너무 뿌듯하고요
이게 다 혼곡족장님이 잘 이끌어주신 덕분인 것 같다,, 새삼 감사합니다 🥰
'혼공학습단 8기' 카테고리의 다른 글
[혼공학습단] 혼자 공부하는 자바 3주차 (0) | 2022.07.24 |
---|---|
[혼공학습단] 혼자 공부하는 자바 2주차 (0) | 2022.07.17 |
[혼공학습단] 혼자 공부하는 자바 1주차 (0) | 2022.07.10 |