반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

bro's coding

java.Deamon Thread 본문

[IT]/java

java.Deamon Thread

givemebro 2021. 3. 17. 15:40
반응형

Deamon Thread

백그라운드에서 실행되는 스레드

자신을 실행시킨 스레드가 종료되면 함께 종료됨

ex) thread.setDaemon(true);

워드 작업 실행시 백그라운드에서 주기적으로 백업을 하도록 구현하고
이 백업 스레드를 setDeamon(true)로 처리하면 워드 프로그램 종료시 함께 종료됨


Deamon Thread를 사용하지 않은 경우

package step8;

/*
 * Daemon Thread 테스트
 * 1. Word Thread
 * 2. Backup Thread
 * 
 * Word Thread 시작시 Backup Thread가 시작하도록 구성
 * Word Thread가 작업을 종료할 때
 * Backup Thread도 작업을 종료하도록
 * 처리하는 프로그램 구성
 */
class BackUpWorker implements Runnable {
	@Override
	public void run() {
		while (true) {
			try {
				backup();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	public void backup() throws InterruptedException {
		Thread.sleep(3000);// 3초 간격으로 백업처리
		System.out.println("워드문서 백업처리");
	}
}

class Word implements Runnable {
	@Override
	public void run() {
		Thread backupTread = new Thread(new BackUpWorker());
		backupTread.start();
		try {
			execute();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			System.out.println("**워드문서 작업종료**");
		}
	}

	public void execute() throws InterruptedException {
		for (int i = 0; i < 10; i++) {
			System.out.println("워드문서 작업 " + i);
			Thread.sleep(1000);
		}
	}
}

public class TestThread8 {
	public static void main(String[] args) {
		System.out.println("**main Tread 시작**");
		Thread wt = new Thread(new Word());
		wt.start();
		System.out.println("**main Tread 종료**");
	}
}
**main Tread 시작**
**main Tread 종료**
워드문서 작업 0
워드문서 작업 1
워드문서 작업 2
워드문서 백업처리
워드문서 작업 3
워드문서 작업 4
워드문서 작업 5
워드문서 백업처리
워드문서 작업 6
워드문서 작업 7
워드문서 작업 8
워드문서 백업처리
워드문서 작업 9
**워드문서 작업종료**
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리
워드문서 백업처리

 


Deamon Thread 사용

package step8;

/*
 * Daemon Thread 테스트
 * 1. Word Thread
 * 2. Backup Thread
 * 
 * Word Thread 시작시 Backup Thread가 시작하도록 구성
 * Word Thread가 작업을 종료할 때
 * Backup Thread도 작업을 종료하도록
 * 처리하는 프로그램 구성
 */
class BackUpWorker implements Runnable {
	@Override
	public void run() {
		while (true) {
			try {
				backup();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	public void backup() throws InterruptedException {
		Thread.sleep(3000);// 3초 간격으로 백업처리
		System.out.println("워드문서 백업처리");
	}
}

class Word implements Runnable {
	@Override
	public void run() {
    
    
    
    
    
		BackUpWorker backupWorker = new BackUpWorker();
		Thread backupTread = new Thread(new BackUpWorker());
		backupTread.setDaemon(true);
		backupTread.start();
        
        
        
        
        
       
		try {
			execute();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				backupWorker.backup();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			System.out.println("**워드문서 작업종료**");
		}
	}

	public void execute() throws InterruptedException {
		for (int i = 0; i < 10; i++) {
			System.out.println("워드문서 작업 " + i);
			Thread.sleep(1000);
		}
	}
}

public class TestThread8 {
	public static void main(String[] args) {
		System.out.println("**main Tread 시작**");
		Thread wt = new Thread(new Word());
		wt.start();
		System.out.println("**main Tread 종료**");
	}
}
**main Tread 시작**
**main Tread 종료**
워드문서 작업 0
워드문서 작업 1
워드문서 작업 2
워드문서 백업처리
워드문서 작업 3
워드문서 작업 4
워드문서 작업 5
워드문서 백업처리
워드문서 작업 6
워드문서 작업 7
워드문서 작업 8
워드문서 백업처리
워드문서 작업 9
워드문서 백업처리
워드문서 백업처리
**워드문서 작업종료**

 

 

 

java.Thread

Thread 사전적 의미 실, 실이 여러개 모여 옷을 만든다 정의 프로세스 내의 세부적 실행단위 (프로세스 : 현재 실행중인 프로그램) ex) 동영상 플레이어 (Youtube 같은)를 실행 : 동영상 플레이어 프로

broscoding.tistory.com

 

반응형

'[IT] > java' 카테고리의 다른 글

java.Network.Inner class/Nested class  (0) 2021.03.22
java.Network.EchoProgram(1:1)  (0) 2021.03.19
java.Network  (0) 2021.03.18
java.currentTimeMillis(유닉스 시간)  (0) 2021.03.18
java.Tread.scheduling  (0) 2021.03.17
java.Tread.sleep  (0) 2021.03.17
java.Thread  (0) 2021.03.17
java.FileMove(파일 이동)  (0) 2021.03.16
Comments