본문 바로가기

Java

자바 스레드 (Thread) 연습문제 1

자바 스레드 (Thread) 연습문제 1:

 

2명의 사람이 있습니다.

사람은 각각 랜덤 1~20까지의 수를 1턴마다 가집니다.

턴은 총 100턴이고, 100턴을 모두 돌고 난 후,

1턴마다 사람이 가진 수를 모두 더했을 때, 누가 더 큰수를 가지고 있는지 스레드를 통해 코드를 짜보세요.

 

저는 마지막에 결과를 출력해주기 위해 join();을 썼습니다.

 

스레드 클래스는 스레드 클래스로부터 직접 상속받아 원하는 스레드를 생성하는 방법을 사용했습니다.

 

package Twentyfive;

import java.util.Random;

class User extends Thread
{
	int result;
	
	public User(String str)
	{
		setName(str);
	}
	
	public void run()
	{	
		result = 0;
		
		for (int i = 1; i <= 100; i++) 
		{
			Random r = new Random();
			int x = r.nextInt(20)+1;
			
			System.out.println(getName() + ": " + x);
			result += x;
		}
	}
}

public class Threadpracticequestion1 {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub

		User u1 = new User ("User1");
		User u2 = new User ("User2");
		
		u1.start();
		u2.start();
		
		u1.join();
		u2.join();
		
		System.out.println("***** User1의 값: " + u1.result + " *****");
		System.out.println("***** User2의 값: " + u2.result + " *****");
		
		if(u1.result>u2.result)
		{
			System.out.println("User 1의 합이 더 큽니다.");
		}
		else if(u1.result<u2.result)
		{
			System.out.println("User 2의 합이 더 큽니다.");
		}
		else
		{
			System.out.println("두 수의 합이 같습니다.");
		}
	}
}

 

콘솔에 나타나는 결과값: