Thread 개념에 대해서 알아보겠습니다.
프로그램(program) : 실행 가능한 형태의 소프트웨어
프로세스(process) : 실행 중인 프로그램
스레드(Thread) : 프로세스의 작업 단위 - 운영체제가 프로그램을 관리하는 방식으로 자바로 만든 프로그램에서도 스레드(Thread)가 만들어지고 동작할 수 있다. (CPU가 동시에 둘 이상의 스레드를 돌리진 않는다. 다만, 눈에 보이지 않을 정도로 빠르게 움직인다는 거..)
스레드(Thread)는 동시성과 병렬성을 가지고 수행하기 때문에 사용자는 동시에 동작하는 것으로 인식한다.
스레드(Thread)의 실습 예제(1)
* 둘 이상의 스레드를 생성해서 어떤 것이 먼저 처리되는지에 대해서 실습
결론 : 먼저 실행한 코드가 먼저 실행, 그러나 먼저 끝나는 것도 아니다.
스레드(Thread)의 실습 예제(2)
* 우선순위(setPriority)를 활용하면 우선순위가 높아지나, 운영체제나 사용 시스템에 따라 결과는 다를 수 있으며, 우선순위가 높다 해도 무조건 선점하는 건 아니라는 점.
스레드(Thread)의 실습 예제(3)
* 순차적인 동작을 처리할 때 싱크가 맞지 않는 부분을 수정해보기
결론 : 정상적으로 처리되며, 동기화(synchronized) 함수를 활용해서 메서드 간의 동기화를 통해서 다른 메서드의 동작 때 침범하지 않고 기다려주도록 구현
스레드(Thread)의 실습 예제(4)
* 스레드 풀(Executors) 생성 : 스레드를 담아두는 집합체, 스레드가 많으면 이론적으로 cpu 메모리가 부하가 날 수도 있다는 이론에 따라 cpu가 부담을 느끼지 않도록 일처리를 해주는 함수
'programming > Java' 카테고리의 다른 글
[Java] (BigInteger) 개념 (2) | 2022.07.18 |
---|---|
[Java] (Generic, class/interface) 개념과 필요성 (1) | 2022.07.18 |
[Java] (interface, 인터페이스) 개념 (6) | 2022.07.13 |
[Java] (abstract method, 추상메서드) 개념 (0) | 2022.07.13 |
[Java] (최상위 클래스 Object) 개념 (5) | 2022.07.12 |