스레드란?
프로세스 내부에서의 작업들로, 하나의 프로세스 안에서 메소드 단위로 실행되는 모듈.
소프트웨어가 실행되어 메모리에 올라가있는, 프로그램 안에서의 최소한의 작업단위
(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의 구현 방법
- extends Thread : Thread를 상속받고 객체화한 뒤에 객체명.start()를 통해 사용 (단순히 thread 사용 뿐 아니라 그 기능까지 사용 가능)
- 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 |