프로그래밍/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
반응형