728x90

Thread 8

스레드, 프로세스, 코어 알아보기

스레드, 프로세스, 코어를 알아보자 !!!   1. 개념 - 스레드란?일반적으로 "프로세스 내에서 실행되는 하나의 흐름"을 의미.컴퓨터 프로그램에서 스레드는 프로그램 내에서 동시에 실행되는 여러 작업을 처리하는 단위.스레드는 멀티태스킹을 지원하며, 하나의 프로세스 내에서 여러 작업을 동시에 처리하는 데 사용.프로세스는 하나 이상의 스레드를 포함할 수 있다.  - 프로세스란?운영 체제에서 실행 중인 프로그램을 의미.프로세스는 실행 중인 프로그램에 의해 사용하는 메모리 공간과 시스템 자원들을 포함하는 실행 단위.프로세스는 프로그램 코드뿐만 아니라 그 코드가 실행되는 동안 필요한 데이터, 자원, 상태 정보 등을 포함.  - 코어란?컴퓨터의 중앙 처리 장치(CPU) 내부에서 실제로 명령을 처리하고 실행하는 물리..

개발/ETC 2025.01.03

프로세스와 스레드

1. 개념 - 프로세스는 컴퓨터에서 실행되고 있는 프로그램. - 스레드는 프로세스 내 작업의 흐름. - 프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 발생. - 이후 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스를 실행. 2. 프로세스와 컴파일 과정 - 프로세스는 프로그램으로부터 인스턴스화 된 것. - 프로그램은 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번역되어 실행될 수 있는 파일이 되는 것을 의미.(C언어 기반의 프로그램을 말함) 전처리: 소스 코드의 주석을 제거하고 #include 등 헤더 파일을 병합하여 매크로를 치환. 컴파일러: 오류 처리, 코드 최적화 작업을 하며 어셈블리어로 변환. 어셈블러: 어셈블리어는 목적 코드로 변환. 이때 확장자는 운영체제마다 다..

개발/ETC 2023.01.29

[Spring] 동시성 이슈 해결 방법 (4)

지난번 포스팅과 코드를 이어간다. https://devhooney.tistory.com/110 [Spring] 동시성 이슈 해결 방법 (3) 지난번 포스팅과 코드를 이어간다. https://devhooney.tistory.com/109 [Spring] 동시성 이슈 해결 방법 (2) 지난번 포스팅과 코드를 이어간다. https://devhooney.tistory.com/108 [Spring] 동시성 이슈 해결 방.. devhooney.tistory.com 메모리 DB인 Redis를 활용하여 데이터 정합성을 맞추는 방법을 알아보자 Lettuce Redisson 2가지가 있다. Lettuce - Lettuce는 setnx 명령어를 활용하여 분산락을 구현한다. 키와 밸류를 set할 때 기존 값이 없을 때만 se..

개발/Java&Kotlin 2022.09.26

[Spring] 동시성 이슈 해결 방법 (3)

지난번 포스팅과 코드를 이어간다. https://devhooney.tistory.com/109 [Spring] 동시성 이슈 해결 방법 (2) 지난번 포스팅과 코드를 이어간다. https://devhooney.tistory.com/108 [Spring] 동시성 이슈 해결 방법 (1) 간단한 재고 시스템으로 알아보는 동시성 이슈 Stock @Entity public class Stock { @Id @GeneratedVal.. devhooney.tistory.com DB를 활용하여 데이터 정합성을 맞추는 여러가지 방법을 알아보려한다. Mysql(mariaDB)를 활용한 방법은 3가지가 있다. Pessimistic Lock (exclusive lock) Optimistic Lock Named Lock - Pes..

개발/Java&Kotlin 2022.09.22

[Spring] 동시성 이슈 해결 방법 (2)

지난번 포스팅과 코드를 이어간다. https://devhooney.tistory.com/108 [Spring] 동시성 이슈 해결 방법 (1) 간단한 재고 시스템으로 알아보는 동시성 이슈 Stock @Entity public class Stock { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private Long productId; private Long quantity;.. devhooney.tistory.com 지난번에 race condition을 방지하기 위해서 데이터에 하나의 쓰레드만 접근하도록 하는것이 방법이었다. 이외에도 다른 방법들이 있는데, 하나씩 정리해보려고 한다. 자바에서 지원하는 방법으로 문제를 해..

개발/Java&Kotlin 2022.09.21

[Spring] 동시성 이슈 해결 방법 (1)

간단한 재고 시스템으로 알아보는 동시성 이슈 Stock @Entity public class Stock { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private Long productId; private Long quantity; @Version private Long version; public Stock(){ } public Stock(Long productId, Long quantity) { this.productId = productId; this.quantity = quantity; } public Long getQuantity() { return quantity; } public void decrease..

개발/Java&Kotlin 2022.09.20

[Java] 쓰레드(Thread)의 실행제어

1. 쓰레드의 생성부터 소멸 쓰레드를 생성하고 start()를 호출하면 바로 실행되지 않고 실행 대기열에 저장되어 차례를 기다린다.(큐 자료구조) - FIFO 실행대기상태에 있다가 자신의 차례가 되면 실행상태 실행시간이 다 되거나 yield()를 만날 경우 다시 실행대기상태 실행 중에 suspend(), sleep(), wait(), join(), I/O block를 만나면 일시 정지 상태 일시정지시간이 다되거나, notify(), resume(), interrupt()가 호출되면 실행대기열에서 자신의 차례를 기다린다. 실행을 다 마치거나 stop()이 호출되면 쓰레드는 소멸 - 번호대로 쓰레드가 실행되는 것은 아님 2. 쓰레드의 동기화 - 한 쓰레드가 진행 중인 작업을 다른 쓰레드가 간섭하지 못하도록 ..

개발/Java&Kotlin 2022.09.15

[Java] 쓰레드(Thread)의 기초

1. 프로세스와 쓰레드 - 프로세스는 실행 중인 프로그램을 말한다. - 프로그램을 실행하면 OS로부터 메모리를 할당받아 프로세스가 된다. - 프로세스는 데이터, 메모리 등의 자원과 '쓰레드'로 구성되어 있다. - 자원을 이용하여 실제로 작업을 수행하는 것이 '쓰레드'이다. - 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재하며, 두 개 이상일 경우 멀티 쓰레드라고 한다. 멀티태스킹과 멀티쓰레딩 - 멀티태스킹은 다중작업을 말한다. 멀티태스킹이 가능하면 여러 개의 프로세스가 동시에 실행될 수 있다. - 멀티쓰레딩은 하나의 프로세스 내에서 여러 쓰레드가 동시에 작업을 수행한다. 멀티쓰레딩의 장단점 장점 - CPU의 사용률을 향상시킨다. - 자원을 효율적으로 사용할 수 있다. - 사용자에 대한 응답성이 향상..

개발/Java&Kotlin 2022.09.14
728x90