본문 바로가기
My Image
프로그래밍/Java

[Java] multi thread 구현 02

by Lim-Ky 2017. 7. 2.
반응형

멀티스레드 구현 2번째 시간

 

일전에 스레드를 만드는 방법 2가지가 있다고 소개했었다.

 

1. java.lang.thread 클래스를 직접 객체화해서 생성

2. Thread를 상속받아 하위클래스에서 구현하는 방법.

 

오늘은 두번째 방법인 작업스레드가 Runnable 인터페이스를 구현시켜 만든 Task(작업스레드가 작업할 일)을 따로

구현하지 않고 Thread를 상속받아 하위클래스에서 run()메서드를 오버라이딩해서 구현하는 방법을 소개한다.

 

간단하다. 아래 코드를 보자.

 

MultiThreadImplement_02 패키지를 보면 WokerThread 클래스는 Thread를 상속받아 run()메서드를 오버라이딩해서 구현했다.

 

 

 

 

package MultiThreadImplement_02;

public class WorkerThread extends Thread {

	@Override
	public void run(){
		for(int i=0; i < 10 ; i++)
			System.out.println("WorkerThread");
		
	}
	
}

 

 

Main클래스에서 직접 Thread를 상속받는 하위클래스를 따로 클래스로 빼는 방법과

익명객체로 바로 구현하는 방법 2가지를 다음과 같이 구현해보았다. 

또 기본적으로 java 프로그램에서 제공해주는 MainThread가 있다고 했었다.

맨 마지막 MainThread가 관할하는 for문 루프를 돌면서 i가 5일때 wokerThread를 실행,

i가 7일때 익명객체로 구현한 anonymousWorkerThread 를 실행시킨다.  

 

 

package MultiThreadImplement_02;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub	
		// Thread 상속받아 run()메서드를 구현한 workerThread 하위클래스 인스턴스를 생성.
		Thread workerThread = new WorkerThread();
		
		
		//코드를 절약하기 위해 익명객체를 이용하여 Thread 객체 생성.
		Thread anonymousWorkerThread = new Thread(){
			@Override
			public void run(){
				for(int i=0; i<10; i++)
					System.out.println("anonymousWorkerThread");
			}	
		};


		//MainThread가 관할하는 for문에서 5일때 workerThread 실행
		//7일때 anonymousWorkerThread 실행
		for(int i=0 ; i<10; i++){
			System.out.println("mainThread");
			if(i == 5)workerThread.start();
			if(i == 7)anonymousWorkerThread.start();
		}
		
	}

}


이상으로 멀티스레드를 구현하는 방법을 배웠다.

 

다음 시간엔 스레드의 상태를 제어하고 

 

스레드 상태에따라 유기적으로 어떻게 다른 스레드와 작업할 수 있는지 알아보겠다.

 

 

 

 

 

 

 

 

반응형

'프로그래밍 > Java' 카테고리의 다른 글

[Java] Thread Pool(스레드 풀)  (11) 2017.07.07
[Java] multiThread name - 스레드 이름  (0) 2017.07.02
[Java] multi thread 구현 01  (1) 2017.06.29
[Java] JVM 메모리 구조  (4) 2017.06.28
[Java] enum 이란?  (3) 2017.06.27

댓글