앱 만들기/안드로이드

데몬쓰레드 만들기

나도 처음이야 2022. 6. 6.

S/W 용어에서 데몬(deamon) 은 사용자가 직접 제어하지 않고 백그라운에서 돌면서 여러 작업을 하는 프로그램을 말합니다. 데몬의 어원 뜻은 그리스어로 '악한 영혼' 이란 뜻으로 인간과 신을 연결해주는 매개체 역할을 하는 존재라고 합니다.

음 백그라운드에서 작업을 하며, 메인 프로그램을 도움을 주는 것을 연관 짓자면 비슷한거 같기도 하네요 ^^

 

어쨌든, 데몬 스레드를 만들어봅시다.

데몬 스레드는 메인 스레드가 종료되면 같이 따라 강제로 종료되는 스레드를 이야기합니다.

메인 스레드가 종료되기 전에는 별도로 자신의 일을 수행하고 있겠죠?

프로그램으로 예를 들자면, 메신저 채팅 중의 파일 송수신 혹은 앱 내에서 자동으로 저장하는 기능 등등이 되겠습니다.

이런 프로그램들은 앱 자체가 정말 종료되면 당연히 종료가 되어야 하니까 말이죠.

 

데몬스레드 는 쓰레드 만드는 방식과 동일하며

단지 Thread.setDeamon(true) 함수만 start() 함수 호출 전에 불러주면 됩니다.

 

1. 데몬 스레드로 동작할 Thread 클래스를 만들어 줍니다.

class DeamonClass extends Thread{

	@Override
	public void run() {
		while(true) {
			try {
				Thread.sleep(1000);
				System.out.println("동영상 재생");
			} catch (InterruptedException e) {
				e.printStackTrace();		
			}	
		}		
	}	
}

2. 메인 스레드에서 데몬 스레드를 설정합니다.

   setDeamon() 은 start() 전에 불러줘야 합니다. 그렇지 않으면 Exception 이 발생합니다.

   규칙이니까 그냥 따라 해 봅니다.

public static void main(String[] args)  {
		// TODO Auto-generated method stub
		
		DeamonClass dc = new DeamonClass();
		dc.setDaemon(true);
		dc.start();
		
		try {
			Thread.sleep(3000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();			
		}
		
		System.out.println("메인쓰레드 종료");

	}

결과는 3초 후, 메인 스레드가 종료하면 강제로 데몬쓰레드도 종료하게 됩니다.

+++

동영상 재생
동영상 재생
메인쓰레드 종료

 

데몬 스레드를 적절히 활용하여 백그라운드 기능을 구현하면 됩니다.

데몬 스레드였습니다. 감사합니다.

반응형

댓글