작업 스레드
- 멀티 스레드 프로그램을 개발 시 먼저 몇 개의 작업을 병렬로 실행할지 결정하고 각 작업별로 스레드를 생성
출처, 이것이 자바다
Thread 클래스로 직접 생성
- java.lang 패키지에 있는 Thread 클래스로부터 작업 스레드 객체를 직접 생성하려면 Runnable 구현 객체를 매개값으로 갖는 생성자를 호출
출처, 이것이 자바다
package ch14.sec03.exam01;
/*
스레드 : 코드를 독립적으로 실행하는 단위.
JVM에서는 메인 스레드라는 기본 스레드를 이용하여 main()메소드가 동작을 하게한다.
- 스레드 : 메인 스레드(기본)
- 실행결과 : 작업1 -> 작업2
*/
import java.awt.Toolkit;
public class BeepPrintExample {
public static void main(String[] args) {
//작업1 - 소리
Toolkit toolkit = Toolkit.getDefaultToolkit();
for(int i=0; i<5; i++) {
toolkit.beep();
try { Thread.sleep(500); } catch (Exception e) {}
}
//작업2 - 띵 문자열 출력
for(int i=0; i<5; i++) {
System.out.println("띵");
try { Thread.sleep(500); } catch (Exception e) {}
}
}
}
package ch14.sec03.exam02;
/*
스레드
1) 메인 스레드
2) 작업자 스레드
실행결과 : (소리1/띵) -> (소리2/띵) -> (소리3/띵) -> (소리4/띵) -> (소리5/띵)
메인 스레드(작업1), 작업자 스레드(작업2) 번갈아가면서 실행이 이루어진다.
동시에 소리와 띵이 실행이 되는 것 처럼 느끼게된다.
*/
import java.awt.Toolkit;
public class BeepPrintExample {
public static void main(String[] args) {
//스레드 객체생성 : Runnable인터페이스를 생성자의 매개변수의 값으로 사용
Thread thread = new Thread(new Runnable() {
//Runnable인터페이스의 추상메소드를 구현 implement
@Override
public void run() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
for(int i=0; i<5; i++) {
toolkit.beep();
try { Thread.sleep(500); } catch (Exception e) {}
}
}
});
thread.start();
for(int i=0; i<5; i++) {
System.out.println("띵");
try { Thread.sleep(500); } catch (Exception e) {}
}
}
}
Thread 자식 클래스로 생성
- Thread 클래스를 상속한 다음 run() 메소드를 재정의해서 스레드가 실행할 코드를 작성하고 객체를 생성
- 혹은 Thread 익명 자식 객체를 사용 가능
출처, 이것이 자바다
출처, 이것이 자바다
package ch14.sec03.exam03;
import java.awt.Toolkit;
public class BeepPrintExample {
public static void main(String[] args) {
//스레드 객체생성 : 익명구현객체
Thread thread = new Thread() {
//재정의
@Override
public void run() {
Toolkit toolkit = Toolkit.getDefaultToolkit();
for(int i=0; i<5; i++) {
toolkit.beep();
try { Thread.sleep(500); } catch (Exception e) {}
}
}
};
thread.start();
//메인스레드(main()메소드) 제어.
for(int i=0; i<5; i++) {
System.out.println("띵");
try { Thread.sleep(500); } catch (Exception e) {}
}
}
}