Notice
Recent Posts
Recent Comments
Link
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
Tags
more
Archives
Today
Total
관리 메뉴

WON.dev

Test . thread 본문

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();
	}
}

'JAVA > chapter21_thread' 카테고리의 다른 글

chapter06 : synchronized  (0) 2023.05.30
chapter05 : synchronized  (0) 2023.05.30
chapter04 : ObjectShare  (0) 2023.05.30
chapter03 : mulitThread  (0) 2023.05.30
chapter02 : multiThread  (0) 2023.05.30