728x90
자바로 만든 프로그램이 있고 그 프로그램을 동작하게 하는 것이 프로세스(Process)라고 한다.
보통 한 개의 프로세스는 한가지의 일을 하지만 쓰레드(thread)를 이용하면 한 프로세스 내에 두가지 또는 그 이상의 일을 동시에 할 수 있다.
쓰레드라는 단어는 자바에서만 사용하는 것이 아닌 운영체제 프로세스의 한부분이고
자바에서 이 쓰레드를 사용하려고 관련 된 클래스가 있는 것이다.
자바에서 쓰레드를 생성 하는 방법에는 Runnable 인터페이스를 구현하는 방법과 Thread클래스를 상속받아 구현하는 방법이 있다.
Thread 클래스를 상속받는 방법은 상속 자체가 한번만 쓸 수 있기 때문에
다중 쓰레드를 구현 할때는 Runnable인터페이스를 활용한다.
Thread
public class ThreadTest extends Thread{
//Thread를 상속하면 run메소드를 구현해야 한다.
@override
public void run(){
for(int i=0; i<10; i++){
System.out.println("thread===>"+i);
}
}
public static void main(String[] args){
ThreadTest tt = new ThreadTest();
tt.start();
for(int i=0; i<10; i++){
System.out.println("main===>"+i);
}
}
}
Runnable
public class ThreadRunnable implemetns Runnable{
@override
public void run(){
for(int i=0; i<10; i++){
System.out.println("thread===>"+i);
}
}
public static void main(String[] args){
Thread tt = new Thread(new ThreadRunnable());
tt.start();
for(int i=0; i<10; i++){
System.out.println("main===>"+i);
}
}
}
sleep
쓰레드 작업을 일시 정지할때 사용한다.
Thread.sleep(1000); //1초 정지 후 실행 된다.
join
쓰레드가 끝나기도 전에 쓰레드를 실행 시킨 메소드의 작업이 먼저 종료가 된다.
만일 쓰레드가 종료 되기전에 메소드의 작업이 종료되는 것을 방지 하고자 할 때 join을 사용한다.
public class ThreadTest extends Thread{
//Thread를 상속하면 run메소드를 구현해야 한다.
@override
public void run(){
for(int i=0; i<10; i++){
System.out.println("thread===>"+i);
}
}
public static void main(String[] args){
ThreadTest tt = new ThreadTest();
tt.start();
try{
tt.join();
}catch(Exception e){
}
for(int i=0; i<10; i++){
System.out.println("main===>"+i);
}
}
}
데몬 쓰레드
자바에서 쓰레드 백그라운드에서 실행 되는 낮은 우선순위를 가진 쓰레드로 메인 쓰레드의 보조적인 역할을 한다.
TreadTest tt = new ThreadTest();
tt.setDaemon(true); //true로 설정 시 데몬스레드로 동작
tt.start();
'웹개발 > java' 카테고리의 다른 글
[자바]JPA 객체 매핑 (0) | 2024.02.02 |
---|---|
[자바]JPA 기초 이론 (0) | 2024.02.02 |
자바 표기법 (0) | 2024.01.29 |
오토박싱, 언박싱(Autoboxing, Unboxing) (0) | 2024.01.23 |
자바 Map NullPointException 발생 문제 (0) | 2024.01.23 |