수업시간 JAVA/문제

스레드 join+currentTimeMillis 써서 달리기시합

SEOKIHOUSE 2023. 5. 8. 21:40
package practice0508thread;

import java.util.Random;

class RunThread1 implements Runnable {
	String name;
	public double time = 0;
	Random r = new Random();
	char c;

	RunThread1(String name, char c) {
		this.name = name;
		this.c = c;
	}

	@Override
	public void run() {
		int times = r.nextInt(1000) + 100;

		long start = System.currentTimeMillis();
		for (int i = 0; i < 10; i++) {
			StringBuilder s = new StringBuilder("          |");
			s.setCharAt(i, c);
			String result = s.toString();
			System.out.println(result);
			try {
				Thread.sleep(times);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
		long end = System.currentTimeMillis();
		time = (double)(end - start)/1000;
		System.out.println(name + "선수 도착완료!!");
	}
}

public class ThreadTestRun {

	public static void main(String[] args) {

		RunThread1 r = new RunThread1("짱구", '*');
		RunThread1 r2 = new RunThread1("흰둥이", '@');
		RunThread1 r3 = new RunThread1("철수", 'c');
		
		Thread t1 = new Thread(r);
		Thread t2 = new Thread(r2);
		Thread t3 = new Thread(r3);
		
		t1.start();
		t2.start();
		t3.start();
		
		double timet1 = 0;
		double timet2 = 0;
		double timet3 = 0;
		
		try {
			t1.join();
			t2.join();
			t3.join();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

		timet1 = r.time;
		timet2 = r2.time;
		timet3 = r3.time;
		
		System.out.println(timet1);
		System.out.println(timet2);
		System.out.println(timet3);
		
		double[] a = new double[3];
		a[0] = timet1;
		a[1] = timet2;
		a[2] = timet3;
		double temp;
		
		String [] b = {r.name, r2.name, r3.name};
		String temp2;
		for (int i = 0; i < a.length - 1; i++) {
			for (int j = i + 1; j < a.length; j++) {
				if (a[i] > a[j]) {
					temp = a[i];
					a[i] = a[j];
					a[j] = temp;
					
					temp2 = b[i];
					b[i] = b[j];
					b[j] = temp2;

				}
			}
		}
		
		for(int i =0; i<a.length; i++) {
			System.out.println((i+1)+"등 " +b[i]+"선수의 기록은 "+a[i]);
		}
		System.out.println("승자는" +b[0]+"님입니다");

		System.out.println("종료");
	}

}