본문 바로가기
백엔드개발자/JAVA

프로세스, 스레드

by 보혀니 2022. 5. 10.

프로세스(process)

 프로세스란 단순히 실행 중인 프로그램이라고 할 수 있다.

사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말한다.

이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성 됩니다.

 

스레드(thread)

 스레드란 프로세스내에서 실제로 작업을 수행하는 주체를 의미

모든 프로세스는 한 개 이상의 스레드가 존재하여 작업을 수행한다.

또한 두개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스라고 한다.

 

 

스레드의 생성과 실행

 자바에서 스레드를 생성하는 방법엔 두 가지 방법이 있다.

1. Runnable 인터페이스 구현

2. Thread 클래스 상속받는 방법

 

 

public class Thread01 {

	public static void main(String[] args) {
		ThreadWithClass thread1 = new ThreadWithClass(); // Thread 클래스 상속
		Thread thread2 = new Thread(new ThreadWithRunnable()); // Runnable 인터페이스를 구현

		thread1.start(); // 스레드의 실행
		thread2.start(); // 스레드의 실행
	}

}

 

public class ThreadWithClass extends Thread {

	public void run() {
		for (int i = 0; i < 5; i++) {
			System.out.println("extends: "+getName());
            // 현재 실행 중인 스레드의 이름을 반환함.

			try {
				Thread.sleep(10); // 0.01초간 스레드를 멈춤.
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

}

 

class ThreadWithRunnable implements Runnable {

	public void run() {
		for (int i = 0; i < 5; i++) {
			System.out.println("Runnable: "+Thread.currentThread().getName());
            // 현재 실행 중인 스레드의 이름을 반환함.

			try {
				Thread.sleep(10);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

}

 

결과?

 

- Thread 클래스를 상속받으면 다른 클래스를 상속받을 수 없기 때문에, 일반적으로는 Runnable 인터페이스를 구현하는 방법으로 스레드를 생성한다.

 

- Runnable 인터페이스는 몸체가 없는 메소드인 run() 메소드 단 하나만 가지는 간단한 인터페이스임

'백엔드개발자 > JAVA' 카테고리의 다른 글

getSession(), getSession(true), getSession(false)  (0) 2022.07.19
@Data , hashCode()  (0) 2022.05.16
Math 클래스  (0) 2022.05.05
Map  (0) 2022.04.25
Collection(List, Set), Map  (0) 2022.04.07