[Java] (Thread) 개념 :: 놓치기 쉬운 정보 저장
728x90
SMALL

Thread 개념에 대해서 알아보겠습니다.

 

프로그램(program) : 실행 가능한 형태의 소프트웨어

프로세스(process) : 실행 중인 프로그램

스레드(Thread) : 프로세스의 작업 단위 - 운영체제가 프로그램을 관리하는 방식으로 자바로 만든 프로그램에서도 스레드(Thread)가 만들어지고 동작할 수 있다. (CPU가 동시에 둘 이상의 스레드를 돌리진 않는다. 다만, 눈에 보이지 않을 정도로 빠르게 움직인다는 거..)

스레드(Thread)는 동시성과 병렬성을 가지고 수행하기 때문에 사용자는 동시에 동작하는 것으로 인식한다.

개념
프로세스 구조
스레드 구조
멀티 스레드의 필요성

스레드(Thread)의 실습 예제(1)

 

* 둘 이상의 스레드를 생성해서 어떤 것이 먼저 처리되는지에 대해서 실습

  결론 : 먼저 실행한 코드가 먼저 실행, 그러나 먼저 끝나는 것도 아니다.

스레드(Thread)의 실습 예제(1)

 

스레드(Thread)의 실습 예제(2)

 

* 우선순위(setPriority)를 활용하면 우선순위가 높아지나, 운영체제나 사용 시스템에 따라 결과는 다를 수 있으며, 우선순위가 높다 해도 무조건 선점하는 건 아니라는 점.

스레드(Thread)의 실습 예제(2)

스레드(Thread)의 실습 예제(3)

* 순차적인 동작을 처리할 때 싱크가 맞지 않는 부분을 수정해보기

결론 : 정상적으로 처리되며, 동기화(synchronized) 함수를 활용해서 메서드 간의 동기화를 통해서 다른 메서드의 동작 때 침범하지 않고 기다려주도록 구현

스레드(Thread)의 실습 예제(3)

스레드(Thread)의 실습 예제(4)

* 스레드 풀(Executors) 생성 : 스레드를 담아두는 집합체, 스레드가 많으면 이론적으로 cpu 메모리가 부하가 날 수도 있다는 이론에 따라 cpu가 부담을 느끼지 않도록 일처리를 해주는 함수

스레드(Thread)의 실습 예제(4)
스레드(Thread)의 실습 예제(4)

 

728x90
LIST

+ Recent posts