본문 바로가기
JAVA

자바 스레드(Thread) 수정 중

by mingutistory 2020. 4. 14.
728x90

용어 정리

태스크(Task) : 일, 작업. 프로세스 + 스레드. 큰 프로그램부터 계산기의 덧셈과 같이 작은 연산 작업까지 포함하는 개념

프로세스(Process) : 운영체제로부터 자원을 할당받아 동작하는 하나의 독립된 프로그램.

스레드(Thread) : 하나의 프로세스에서 실행하는 작업의 단위. 

ex) 비행기 게임. 내가 조종하는 비행기 외에 다른 사람들이 조종하는 비행기들 존재. 서로 다른 비행기들이 독립적으로 비행하는데 이 때 모든 비행기들을 스레드로 이해하면 됨. 비행기 게임은 하나의 프로세스임. 

- 스레드는 스레드끼리 자원을 공유하며 실행 가능. 

- 하나의 프로세스를 실행하면 하나의 스레드가 실행. 메인 스레드. 프로세스의 시작. 

 

싱글 스레드 프로세스 <-> 멀티 스레드 프로세스

멀티 태스킹 : 일을 병렬 처리 하는 것. OS에서 많이 사용되는 용어. 스케줄링을 통한 멀티 태스킹. 

멀티 프로세싱 : 여러 개의 CPU 프로세스가 서로 협력하여 작업을 병행 처리 하는 기법. 

멀티 스레딩 : 하나의 프로그램(프로세스)에서 여러 개의 스레드가 실행 되는 것. 멀티 스레드들은 자원을 공유함으로 가벼움. 각각의 스레드 제어를 통해 성능 향상 가능.

 

스래드 생성

방법 2가지 : Thread 클래스 / Runnable 인터페이스 

1. Tread 클래스

: 원하는 작업을 수행하는 스레드를 만들기 위해서는 Thread 클래스의 run() 메소드를 오버라이딩 해야 한다. 

 

2. Runnable 인터페이스

새로운 실행 흐름을 만들기 위해서는 스레드 객체를 생성하고 start() 메소드를 호출 해야 함. 

Runnable r = new ThreadSample();

Thread t = new Thread(r);

t.start(); 

 

차이점 : 자바는 단일 상속만 가능하므로 Thread 클래스의 경우에는 확장성이 떨어짐 = Runnable 인터페이스가 확장성, 재사용성이 좋아 다형성 측면에서 유리하다. 

 

run() 메소드 <-> start() 메소드

run() 메소드 : 일반 메소드와 동일. 자신이 완료되어야 다음 라인이 실행 됨. 

start() 메소드 : 새로운 실행 흐름이 생성되어 main()과 myRhread가 각각 실행 흐름을 가짐. 

 

모든 스레드는 독립적인 실행 흐름으로 부모 스레드가 종료되어도 자식 스레드의 실행 흐름에 영향을 미치지 않음. 즉, 모든 실행 흐름이 끝나야 비로소 프로세스가 종료됨. 

 

정리 중 

 

참고자료

자바를 다루는 기술

이것이 자바다

구글링

300x250

댓글