카테고리 없음

2022_10_31 연습 03 package com.ssc.multithread;

0304호 2022. 10. 31. 17:36

Semaphore

package com.ssc.multithread;

import java.util.concurrent.Semaphore;
public class SemaphoreThread extends Thread{
	String message;
	Semaphore semaphore;
	
	
	
	public SemaphoreThread(String message, Semaphore semaphore) {
		this.message = message;
		this.semaphore = semaphore;
		
	}
	
	
	@Override
	public void run() {
		try {
			//리소스 확보
			semaphore.acquire();
			Thread.sleep(10000);
			System.out.println(message);
		} catch (Exception e) {	}
		//리소스 해제
		semaphore.release();
		
	}
	
	
}​
package com.ssc.multithread;

import java.util.concurrent.Semaphore;

public class SemaphoreMain {
	
	public static void main(String[] args) {
		//2개씩 실행할 수 있는 세마포어
		Semaphore semaphore = new Semaphore(2);
		
		Thread th1 = new Thread( new SemaphoreThread("카리나",semaphore));
		Thread th2 = new Thread( new SemaphoreThread("지젤",semaphore));
		Thread th3 = new Thread( new SemaphoreThread("윈터",semaphore));
		Thread th4 = new Thread( new SemaphoreThread("닝닝",semaphore));
		th1.start();
		th2.start();
		th3.start();
		th4.start();
		
	}
}