목록JAVA/chapter21_thread (7)
WON.dev
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 d..
package org.joonzis.ex; class MyThread3 implements Runnable{ /* * Thread.wait() * Object.notify() * * - 모니터링 락 설정 메소드 * - synchronized 블럭 내에서 사용해야 함 */ static int tot; @Override public void run() { synchronized (this) { for(int i=0; i
package org.joonzis.ex; class AnimalSound{ /* * 1. synchronized (동기화) * 1) 메소드에 붙여서 사용 * (1) 여러개의 Thread들이 공유 객체의 메소드를 사용할 때 * 메소드에 synchronized가 붙어 있을 경우 먼저 호출한 메소드가 객체의 * 사용권(Monitoring Lock)을 얻는다. * 락은 메소드가 종료되거나, wait() 같은 메소드를 만나기 전까지 유지된다. * (2) 메소드가 길어지게 될 경우 대기 시간이 증가할 수 있다. * 2) synchronized 블럭 사용 */ public synchronized void dog() { for(int i=0; i
package org.joonzis.ex; class MusicBox{ public void rock() { for(int i=0; i
package org.joonzis.ex; class MyThread2 implements Runnable{ private String str; public MyThread2(String str) { this.str = str; } @Override public void run() { for(int i=0; i
package org.joonzis.ex; class MyThread extends Thread{ /* 1. 스레드 클래스를 상속 받아 정의 * run() 메소드를 재정의 하여 스레드가 실행할 코드를 작성한다. */ private String str; public MyThread(String str) { this.str = str; } @Override public void run() { for(int i=0; i