도라에몽주머니

[Java/Eclipse] Java 55일차 본문

Study/Java

[Java/Eclipse] Java 55일차

에몽쓰 2022. 12. 1. 17:16

Java

 

프로세스(Process)

: 실행중인 프로그램

 

스레드(Thread)

: 시작점과 종료점을 가지는 하나의 작업흐름. 프로세스 내에서 실제로 작업을 수행하는 주체를 의미.

  • 싱글 스레드(Single Thread) : 하나의 프로세스에 오직 하나의 스레드만 실행
  • 멀티 스레드(Multi Thread) : 둘 이상의 스레드를 병렬적으로 실행

출처 : https://velog.io/@gil0127/%EC%8B%B1%EA%B8%80%EC%8A%A4%EB%A0%88%EB%93%9CSingle-thread-vs-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%93%9C-Multi-thread-t5gv4udj

 

스레드의 생성과 실행

  1. Runnable 인터페이스를 구현하는 방법 → 다중 상속 가능
  2. Thread 클래스를 상속받는 방법 → 다중 상속 불가능

 

1. Runnable 인터페이스를 구현하는 경우

: start()를 이용해 실행. Thread를 통해서만 사용 가능함.

import javax.swing.JFrame;

/* Runnable 상속 */
class ThreadExam2 extends JFrame implements Runnable {
	@Override
	public void run() {
		System.out.println("일반 thread 동작");
		// 아스키 코드를 문자로 출력 (65~123) => 알파벳 대문자 소문자 출력
		for(int i=0; i<=58; i++) {
			System.out.print((char)(65 + i));
		}
	}
}

public class Exam2 {
	public static void main(String[] args) {
		System.out.println("main Thread 동작");
		
		ThreadExam2 threadExam2 = new ThreadExam2();
//		threadExam2.run(); // 일반함수 호출 동작
		
		// run() 함수를 스레드로 동작시킴
		Thread thread = new Thread(threadExam2);
		thread.start();
		
		for(int i=1; i<=300; i++) {
			System.out.print(i + " ");
			if(i%10 == 0) {
				System.out.println();
			}
		}
	}
}

 

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

: start()를 이용해 실행

/* Thread 상속 */
class ThreadExam1 extends Thread {
	@Override
	public void run() {
		System.out.println("일반 thread 동작");
		// 아스키 코드를 문자로 출력 (65~123) => 알파벳 대문자 소문자 출력
		for(int i=0; i<=58; i++) {
			System.out.print((char)(65 + i));
		}
	}
}

public class Exam1 {
	public static void main(String[] args) {
		System.out.println("main Thread 동작");
		
		ThreadExam1 threadExam1 = new ThreadExam1();
//		threadExam1.run(); // 일반 함수 호출 동작
		// run() 함수를 쓰레드로 동작
		threadExam1.start();
		
		for(int i=1; i<=300; i++) {
			System.out.print(i + " ");
			if(i%10 == 0) {
				System.out.println();
			}
		}
	}
}

'Study > Java' 카테고리의 다른 글

[Java/Eclipse] Java 58일차  (0) 2022.12.06
[Java/Eclipse] Java 56일차  (0) 2022.12.02
[Java/Eclipse] Java 54일차  (0) 2022.12.01
[Java/Eclipse] Java 53일차  (0) 2022.12.01
[Java/Eclipse] Java 52일차  (0) 2022.11.28