Thread 하위 클래스로부터 생성
class WorkerThread extends Thread {
@Override
public void run() {
// 스레드가 실행할 코드;
}
}
Thread thread = new WorkerThread();
thread.start();
Thread thread = new Thread() {
@Override
public void run() {
// 스레드가 실행할 코드;
}
};
thread.start();
예제
package main;
import java.awt.*;
public class BeepThread extends Thread {
@Override
public void run() {
// 비프음을 5번 반복해서 소리나게 하는 작업
Toolkit toolkit = Toolkit.getDefaultToolkit();
for (int i = 0; i < 5; i++) {
toolkit.beep();
try {
Thread.sleep(500); // 스레드 일시정지
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
package main;
import java.awt.*;
public class BeepPrintExample3 {
public static void main(String[] args) {
// Thread thread = new BeepThread();
// thread.start();
Thread thread = new Thread() {
@Override
public void run() {
// 비프음을 5번 반복해서 소리나게 하는 작업
Toolkit toolkit = Toolkit.getDefaultToolkit();
for (int i = 0; i < 5; i++) {
toolkit.beep();
try {
Thread.sleep(500); // 스레드 일시정지
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
thread.start();
// "띵" 문자열을 5번 출력하는 작업
for (int i = 0; i < 5; i++) {
System.out.println("띵");
try {
Thread.sleep(500); // 스레드 일시정지
}catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
스레드의 이름
-> 메인 스레드 이름: main
-> 작업 스레드 이름: Thread-n
thread.getName();
-> 작업 스레드의 이름 변경
thread.setName("스레드 이름");
-> 코드를 실행하는 스레드의 참조 얻기
Thread thread = Thread.currentThread();
예제
package main.threadname;
public class ThreadNameExample {
public static void main(String[] args) {
Thread thread = Thread.currentThread();
System.out.println("프로그램 시작 스레드 이름: " + thread.getName());
Thread threadA = new ThreadA();
threadA.start();
}
}
package main.threadname;
public class ThreadA extends Thread {
@Override
public void run() {
for (int i = 0; i < 2; i++) {
System.out.println(getName() + "가 출력한 내용");
}
}
}
실행결과:
프로그램 시작 스레드 이름: main
Thread-0가 출력한 내용
Thread-0가 출력한 내용
이때 ThreadA의 생성자에서 해당 스레드의 이름을 바꿔준다.
package main.threadname;
public class ThreadA extends Thread {
public ThreadA() {
setName("스레드에이");
}
@Override
public void run() {
for (int i = 0; i < 2; i++) {
System.out.println(getName() + "가 출력한 내용");
}
}
}
결과:
프로그램 시작 스레드 이름: main
스레드에이가 출력한 내용
스레드에이가 출력한 내용
참고)
.start() 는 재사용x
'자바' 카테고리의 다른 글
[스레드] 4. 동기화 메소드와 동기화 블록 (0) | 2022.04.24 |
---|---|
[스레드] 3. 스레드 우선 순위 (0) | 2021.12.29 |
[스레드] 2. 작업 스레드 생성과 실행 - 1 (0) | 2021.12.29 |
[스레드] 1. 멀티 스레드 개념 (0) | 2021.12.29 |
8.3 Field Declarations (2) (0) | 2021.10.11 |