JAVA 12강_2_스레드(Thread)

열라뽕따히·2024년 3월 2일

JAVA

목록 보기
75/79

스레드(Thread)란?

  • process를 작은 단위로 쪼개어 놓은 작업 단위
    ==> 실제 프로그램이 수행이 되는 작업의 최소 단위
  • 스레드는 병행 처리를 지원함(멀티태스킹)
  • 응용분야 : 게임, 채팅 등등

[스레드 클래스 작성 방법 - 2가지]

1. Thread 클래스를 상속(extends)을 받아 사용하는 방법

1) Thread 라는 클래스를 상속(extends) 받음

2) run() 메서드를 재정의 - 스레드 구현

3-1) Thread 클래스 객체 생성

3-2) 참조변수.start() 메서드를 호출
==> start() 메서드를 호출하면 run() 메서드를 실행함


2. Runnable 인터페이스를 구현(implements)하여 사용하는 방법

1) Runnable 인터페이스를 구현(implements)

2) run() 추상 메서드를 재정의

3) 스레드 클래스(자식클래스) 객체 생성

4) Thread 라는 클래스 객체 생성
==> 생성자(인자생성자) 안에 스레드 클래스(자식클래스)의 참조변수를 기재

5) Thread 라는 클래스의 참조변수.start() 메서드 호출







1. Thread 클래스를 상속(extends)을 받아 사용하는 방법 예시



=============================코드=============================

class Thread1 extends Thread {  // 1-1) 스레드를 상속 받음 
	
	@Override
	public void run() {         // 1-2) run()메서드 재정의
		int i = 1;
		
		while(true) {  // 무한 반복
			
			System.out.println("i >>> " + i);
			
			i++;
		}
		
	}  
}

class Thread2 extends Thread {
	
	@Override
	public void run() { 
		
		int j = 1;
		
		while(true) {  // 무한 반복
			
			System.out.println("j >>> " + j);
			
			j++;
		}
		
	}
}

public class Thread_02 {

	public static void main(String[] args) {
		
	// 3-1) 재정의한 Thread 클래스 객체를 생성
		Thread1 thread1 = new Thread1();
		Thread2 thread2 = new Thread2();
		
	// 3-2) 참조변수.start() 메서드 호출
		thread1.start();  thread2.start();    // run() 메서드 실행

	}

}

=============================실행=============================

i와 j의 값이 번갈아가며 무한반복으로 출력됨






2. Runnable 인터페이스를 구현(implements)하여 사용하는 방법 예시



=============================코드=============================

class Runnable1 implements Runnable {   // 2-1) Runnalble 인터페이스 구현

	@Override
	public void run() {                 // 2-2) run() 추상 메서드 재정의

		int i = 1;
		
		while(true) {  // 무한 반복
			
			System.out.println("i >>> " + i);
			
			i++;
		}
		
	}
	
}

class Runnable2 implements Runnable {

	@Override
	public void run() {
		int j = 1;
		
		while(true) {  // 무한 반복
			
			System.out.println("j >>> " + j);
			
			j++;
		}
		
	}
	
}

public class Thread_03 {

	public static void main(String[] args) {
		
	// 2-3) 스레드 클래스(자식클래스) 객체 생성
		Runnable1 runnable1 = new Runnable1();
		Runnable2 runnable2 = new Runnable2();
		
	// 2-4) Thread 라는 클래스 객체 생성
		//      ==> 생성자(인자생성자) 안에 스레드 클래스(자식클래스)의 참조변수를 기재
		Thread thread1 = new Thread(runnable1);  // 자식 클래스인 runnable1을 thread1의 참조 변수로 넣어줌
		Thread thread2 = new Thread(runnable2);  
		
	// 2-5) Thread 라는 클래스의 참조변수.start() 메서드 호출
		thread1.start();  thread2.start();
	}

}

=============================실행=============================

i와 j의 값이 번갈아가며 무한반복으로 출력됨

0개의 댓글