프로그래밍/JAVA

37 멀티쓰레드를 이용한 문제 풀이

윤지(●'◡'●) 2021. 5. 4. 10:56
728x90
반응형

 


문제

 

자바 단과반에서 풀어본 문제 풀이 ( •̀ ω •́ )✧

 

동물원에 동물 3마리가 있다.
각 동물은 울음소리가 다르고 2마리의 동물은 동시에 운다.
나머지 1마리 동물은 2마리 동물이 모두 울고 나서 마지막에 운다.
클래스는 총 2개를 사용하고 하나의 클래스에는 main메소드가 있다.
Runnable 인터페이스로 멀티쓰레드를 구현하고 반드시 join()을 사용한다.
※각 동물은 10번씩만 운다. 제한시간 : 20분

 

Animals 클래스

public class Animals extends Thread{// Thread 상속
	private String sounds;//동물의 울음소리를 저장할 String 타입 변수 sounds

	public Animals(String sounds) { //생성자
		super();
		this.sounds = sounds;
	}
	
	@Override
	public void run() {
		printSound(500); //0.5초 단위로 실행
	}
	
    // 동물 울음소리 출력 메소드
	public void printSound(long millis) {
		for (int i = 0; i < 10; i++) { //10번 반복
			System.out.println(sounds); // 동물울음 소리 출력
			try {
				Thread.sleep(millis); 
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		
		}
	}
}

 

 

메인 클래스 

public class Zoo {
	public static void main(String[] args) {
    	//Animals 객체 세개 생성(동물 세마리 생성)
		Animals cat = new Animals("야옹");	
		Animals dog = new Animals("멍멍");
		Animals pig = new Animals("꿀꿀");
	
		cat.start();
		dog.start();
		
        // join으로 우선순위를 줘서 두마리의 울음소리가 끝난 후 한마리 실행되게함
		try {cat.join();dog.join();} catch (InterruptedException e) {;}
		
		pig.start();
	}
}

 

 

결과

멍멍
야옹
멍멍
야옹
멍멍
야옹
멍멍
야옹
멍멍
야옹
멍멍
야옹
멍멍
야옹
멍멍
야옹
멍멍
야옹
멍멍
야옹
꿀꿀
꿀꿀
꿀꿀
꿀꿀
꿀꿀
꿀꿀
꿀꿀
꿀꿀
꿀꿀
꿀꿀

 

 


열심히 공부하고 있지만, 오류 사항이 존재 할 수 있습니다.

수정 사항이 존재 할 경우 알려주시면 감사하겠습니다 <(__)>

728x90
반응형