JAVA/chapter21_thread
Test . thread
GAWON
2023. 5. 30. 18:35
Q1. Test01.java
Thread 클래스를 상속받아 2개의 쓰레드의(메인 스레드 포함)
동작 완료 시간을 출력
★System.currentTimeMillis(),
sleep((int)(Math.random()*1000)) 이용
Q2. Test02.java
멀티 스레드를 이용하여 구구단을 출력(동기화 X)
class GugudanPlay 메소드 : play(int dan)
class Gugudan 필드 : int dan, GugudanPlay gugudan
메소드 : 생성자 , run()
class Main
- 참조 배열 이용
Q3. Test03.java
멀티 스레드를 이용하여 구구단을 출력(동기화 O)
class GugudanPlay2 메소드 : play()
class Gugudan2 필드 : int dan, GugudanPlay2 gugudan
메소드 : 생성자 , run()
class Main
- 참조 배열 이용, 개별 객체 이용(2가지 모두 구현)
package org.joonzis.test;
//Q1. Test01.java
//Thread 클래스를 상속받아 2개의 쓰레드의(메인 스레드 포함)
//동작 완료 시간을 출력
//★System.currentTimeMillis(),
// sleep((int)(Math.random()*1000)) 이용
public class Test01 extends Thread{
@Override
public void run() {
long s_time;
long e_time;
try {
s_time = System.currentTimeMillis();
Thread.sleep((int)(Math.random()*1000));
e_time = System.currentTimeMillis();
System.out.println("멀티 스레드 걸린 시간 : " + (e_time-s_time));
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Test01 t = new Test01();
t.start();
long s_time;
long e_time;
try {
s_time = System.currentTimeMillis();
Thread.sleep((int)(Math.random()*1000));
e_time = System.currentTimeMillis();
System.out.println("메인 스레드 걸린 시간 : " + (e_time-s_time));
} catch (Exception e) {
e.printStackTrace();
}
}
}
package org.joonzis.test;
class GugudanPlay {
public void play(int dan) {
for(int i=1; i<=9; i++) {
System.out.println(dan + "x" + i + "=" + (dan*i));
}
}
}
class Gugudan extends Thread{
private int dan;
private GugudanPlay gugudan;
public Gugudan(int dan, GugudanPlay gugudan) {
this.dan = dan;
this.gugudan = gugudan;
}
@Override
public void run() {
gugudan.play(dan);
}
}
public class Test02 {
public static void main(String[] args) {
Gugudan[] dan = new Gugudan[8];
for(int i=0; i<dan.length; i++) {
dan[i] = new Gugudan((i+2), new GugudanPlay());
dan[i].start();
}
}
}
package org.joonzis.test;
class GugudanPlay2 {
public void play(int dan) {
synchronized (this) {
for(int i=1; i<=9; i++) {
System.out.println(dan + "x" + i + "=" + (dan*i));
}
}
}
}
class Gugudan2 extends Thread{
private int dan;
private GugudanPlay2 gugudan;
public Gugudan2(int dan, GugudanPlay2 gugudan) {
this.dan = dan;
this.gugudan = gugudan;
}
@Override
public void run() {
gugudan.play(dan);
}
}
public class Test03 {
public static void main(String[] args) {
GugudanPlay2 play = new GugudanPlay2();
Gugudan2[] dan = new Gugudan2[8];
for(int i=0; i<dan.length; i++) {
dan[i] = new Gugudan2((i+2), play);
dan[i].start();
}
// Gugudan2 dan2 = new Gugudan2(2, play);
// Gugudan2 dan3 = new Gugudan2(3, play);
// Gugudan2 dan4 = new Gugudan2(4, play);
// Gugudan2 dan5 = new Gugudan2(5, play);
// Gugudan2 dan6 = new Gugudan2(6, play);
// Gugudan2 dan7 = new Gugudan2(7, play);
// Gugudan2 dan8 = new Gugudan2(8, play);
// Gugudan2 dan9 = new Gugudan2(9, play);
//
// dan2.start();
// dan3.start();
// dan4.start();
// dan5.start();
// dan6.start();
// dan7.start();
// dan8.start();
// dan9.start();
}
}