1. 쓰레드(Thread)란 뭘까?
Thread 란?
-process란? 실행 중인 프로그램 실행되면 OS로 부터 메모리를 할당받아 프로세스 상태가 된다.
-하나의 프로세스는 하나 이상의 thread를 가지게 되고, 실제 작업을 수행하는 단위는 thread이다.
1. 첫번째 방법은 Thread 클래스 상속하여 만들 수 있습니다.
package thread;
/**
* 쓰레드 만들어 보기 (생성)
* 1. 상속을 활용해서 쓰레드를 만들어 보자 (작업자 만들어 보기)
*
*/
public class Worker extends Thread {
private String name;
public Worker(String name) {
this.name = name;
}
// 서브 작업자 해야할 일은 run() 메서안에 재정의 해주어 한다.
// 약속된 부분 ! start() 메서들 통해서 쓰레드한테 일을 시작해라고 명령을 줄 수 있다.
// 그러면 다른 쓰레드가 run() 안에 있는 부분을 수행 시킨다.
@Override
public void run() {
for(int i = 0; i < 50; i++) {
System.out.println("worker " + name + " : " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
System.out.println("외부에서 신호를 받아서 예외가 발생 됐어!!");
e1.printStackTrace(); // 예외가 발생한 부분들 좀 더 상세히 출력해 (추적)
}
}
}
}
----------------------------------------------------------------------------------------------
package thread;
public class WorkerMainTest {
// 메인 쓰레드
public static void main(String[] args) {
// 사용하는 방법
System.out.println("--------- main 쓰레드 시작 -------------");
// 현재 쓰레드가 누구인지 알아보는 명령어 .
System.out.println(Thread.currentThread()); // [#1,main,.....]
// 작업자 하나 만들어 내기
Worker worker1 = new Worker("워커1(서브쓰레드)");
worker1.start(); // 너가 위임 받은 일은 시작해
System.out.println("--------- main 쓰레드 종료 -------------");
} // end of main
} // end of class
------------------------------------------------------------------------------------------------------------
2. 두번째 방법은 Runnable 인터페이스 구현하여 만들 수 있습니다.
package thread;
public class Worker2 implements Runnable {
@Override
public void run() {
for (int i = 0; i < 200; i ++) {
System.out.print( i+ "\t");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
}
-------------------------------------------------------------------------------------------------
package thread;
public class Worker2MainTest {
// 메인 쓰레드
public static void main(String[] args) {
// 상속을 활용한 쓰레드 생성
// Worker worker1 = new Worker("워커1");
// worker1.start();
// 2. 인테페이스를 활용해서 쓰레드를 start() 시키는 방법
Worker2 worker2 = new Worker2();
// 인터페이스를 사용했을 때 start() 메서드가 없어서 실제 동작을 못 시키고 있다.
// worker2.start();
Thread subT1 = new Thread(worker2);
subT1.start();
} // end of main
} // end of class
----------------------------------------------------------------------------------------------------------------
3. 쓰레드의 실행시 쓰레드 상태라는 개념을 알아 보자
'JAVA 유용한 클래스' 카테고리의 다른 글
(JAVA)inner class (중첩 클래스) - 7 (0) | 2025.04.25 |
---|---|
(JAVA)자바 multi-threading 이란 - 6 (0) | 2025.04.25 |
(JAVA)Exception(예외처리) (0) | 2025.04.24 |
(JAVA)String, StringBuffer (0) | 2025.04.24 |
(JAVA)자바 API 문서 확인해 보기 - 2 (0) | 2025.04.24 |