본문 바로가기
IT★_공부

자바의 스레드

by 문또끼 2022. 8. 23.

스레드란?

프로세스 내부에서의 작업들로, 하나의 프로세스 안에서 메소드 단위로 실행되는 모듈.

소프트웨어가 실행되어 메모리에 올라가있는, 프로그램 안에서의 최소한의 작업단위

(transaction은? : 데이터베이스 시스템에서 데이터 처리되는 최소한의 작업 단위이다.)

프로세스(process)?

프로그램이 메모리에 실제 구현되어 실행되고 있는 객체. (메모리에 올라간 객체, 한 프로그램의 프로세서가 여러개가 될수 있다)

프로그램?

실행할 수 있는 파일 ( 예, .exe, .app 과 같은 응용 소프트웨어/ mac 의 경우 app )

<용어정리>

Runtime클래스: getRuntime() 객체를 매소드를 이용해서 객체생성하는 프로세스 생성과 관련된 Singleton 패턴의 class이다.

Singleton pattern : 하나의 객체만을 생성해 이후에 호출된 곳에서는 생성된 객체를 반환하여 프로그램 전반에서 하나의 인스턴스만을 사용하게 하는 패턴

.start(): thread를 실행시킨다. JVM 이 이 스레드의run메소드를 호출한다.

System.currentTimeMillis() : 현재시간과 January 1, 1970 UTC시간의 차이를 밀리초로 나타냄 .join(): 이 스레드가 실행이 끝날 때까지 기다려라.

서로다른 runtime객체를 start했을 때, priority가 높은 것이 먼저 출력되지 않는 이유는?

thread의 priority를 설정 해주더라도, java thread scheduling은 우선순위(priority)와 순환할당(round-robin) 방식을 사용하기 때문에 절대적으로 우선순위를 먼저 반영하는 것은 아니다.

우선순위(priority): Thread.MIN_PRIORITY : 1 (우선순위 가장 낮음.) Thread.MAX_PRIORITY : 10 (우선순위 가장 높음.)

순환할당(round-robin) 방식 : 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위(Time Quantum/Slice)로 CPU를 할당하는 방식의 CPU 스케줄링.

Thread의 구현 방법

  1. extends Thread : Thread를 상속받고 객체화한 뒤에 객체명.start()를 통해 사용 (단순히 thread 사용 뿐 아니라 그 기능까지 사용 가능)
  2. implements Runnable : Thread 객체 안에 쓰레드를 사용하려는 객체를 넣어줘서 객체화한 뒤 사용. ( 단순히thread 화를 위해서 사용)

'IT★_공부' 카테고리의 다른 글

[DB]oracle 설치와 설치확인방법  (0) 2022.08.25
missing script: dev 에러 해결방법  (0) 2022.08.23
자바의 Stream  (0) 2022.08.23
자바의 Exception  (0) 2022.08.23
자바의 Collection  (0) 2022.08.23