z2soo's Blog

JAVA 멀티스레드 (연습) 본문

Programming/JAVA

JAVA 멀티스레드 (연습)

z2soo 2023. 1. 11. 15:17
반응형

To-do

1. main스레드에서는 두 개의 스레드를 만들어내서 작동시킨다. 그리고 최종 결과만 출력한다. 
2. 스레드 작업내용
   - 자신의 이름을 출력한다.
   - 전역변수(static 데이터)에 랜덤한 숫자를 1개 누적시킨다.
   - 작업이 끝나면 자신의 이름 + "작업 완료" 메시지를 출력한다.
3. static 데이터는 처음에 (0)으로 초기화되어 있어야 한다. 

 

Key point

단점 : 스레드 사용시, 어떤 작업이 어떤 순서로 어떤 시점에 수행되는지 알 수 없어 사용하기 까다로움
장점 : CPU를 최대한으로 끌어서 사용할 수 있음

* 주로 네트워크 쪽에서 많이 사용한다. 

 

Java Code

ThreadWork

package ThreadPack;
import java.util.Random;

public class ThreadWork implements Runnable {
	
	//전역변수(공유데이터)>Threadwork 객체들 모두 다 접근 가능
	static int shread_data=0;
	
	public void run() {		
		System.out.println("["+Thread.currentThread().getName()+"]");
		
		Random random = new Random();
		int rand_num = random.nextInt(50000);
		System.out.println("생성한 랜덤 숫자: "+rand_num);
		shread_data+=rand_num;
		System.out.println("["+Thread.currentThread().getName()+"작업끝!]");		 		
	}
}

 

ThreadPlay

package ThreadPack;

public class ThreadPlay {
	public static void main(String[] args) throws InterruptedException {
		
		Runnable work = new ThreadWork();
		Thread t1 = new Thread(work);
		Thread t2 = new Thread(work);		

		t1.setName("T1");
		t2.setName("T2");
	
		t1.start(); 
		t2.start(); 						
	}
}

 

위의 코드를 실행하면 아래와 같이 출력된다. 

반응형
Comments