수업시간 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("종료");
}
}