버터감자
오늘도 내 하루는
버터감자
전체 방문자
오늘
어제
  • 분류 전체보기 (139)
    • 🏃‍♀️ Do it ! (80)
      • TIL (73)
      • Project (5)
      • Certificate (2)
    • 📓 TechNote (52)
      • RPA (1)
      • Python (2)
      • JAVA (13)
      • Spring (11)
      • SQL (7)
      • Git & GitHub (6)
      • CS (0)
      • HTML & CSS & JavaScript (2)
      • Tools (9)
      • API (1)
    • 🔔 Error (7)
      • Error (7)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 배열
  • callback
  • 홈페이지
  • 포트폴리오
  • 문제풀이
  • 스택
  • 안드로이드
  • 이것이자바다
  • 부트스트랩
  • 세션
  • 톰캣
  • 게시판
  • SQL
  • 스프링
  • 만들기
  • 함수
  • 변수
  • 큐
  • 버블소트
  • 기본쿼리
  • foreach
  • sqld
  • 객체지향
  • final필드
  • 데이터베이스
  • opacity
  • 코틀린
  • 오라클
  • 이클립스
  • dml

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
버터감자
🏃‍♀️ Do it !/TIL

프로세스 / 스레드 / 동기화 메소드, 동기화 블록

프로세스 / 스레드 / 동기화 메소드, 동기화 블록
🏃‍♀️ Do it !/TIL

프로세스 / 스레드 / 동기화 메소드, 동기화 블록

2022. 9. 23. 16:28
728x90

2022 / 9 / 23 금

  • 프로세스
  • 스레드
  • 동기화 메소드, 동기화 블록

✔ 프로세스

실행 중인 하나의 프로그램을 프로세스라고 부른다. 

실행 하고 있는 프로그램은 다중 프로세스를 만들기도 한다.

▼ 크롬 창을 여러개 실행한다면 여래개의 크롬 프로세스가 생성된다 !


✔ 스레드

멀티 태스킹

두가지 이상의 작업을 동시에 처리하는 것

멀티 프로세스 멀티 스레드
독립적으로 프로그램을 실행하고 여러 작업을 처리 한 개의 프로그램을 실행하고 내부에서 여러 작업을 처리
PPT와 엑셀을 동시에 사용하는중에
엑셀에 오류가 생겨 프로그램이 꺼져도
PPT는 정상 실행 된다. 
카카오톡을 사용하는 중에
카톡 채팅방에 오류가 생긴다면
카톡 프로세스 자체가 종료된다. 

메인 스레드

모든 자바 프로그램은 메인 스레드 ( main thread )가 main( ) 메소드를 실행하며 시작된다.

✨ 메인 스레드는 작업 스레드를 만들어 병렬로 코드를 실행 할 수 있다. -> 그렇기에 멀티 태스킹 가능하다는 것

싱글 스레드 멀티 스레드
메인 스레드 종료시 프로세스 종료 실행 중인 스레드가 한개라도 있다면,
프로세스가 종료되지 않는다.

🔔

멀티 스레드로 실행되는 프로그램을 개발하기 위해서는 

몇개의 작업을 병렬로 실행할지 우선 결정해야한다 !

그 후 각 작업별로 스레드를 생성한다.


작업 스레드 생성 방법

1. Thread 클래스로 직접 생성

2. Thread 하위 클래스로부터 생성


스레드 이름

스레드 이름은 디버깅할때 어떤 스레드가 어떠한 작업을 하는지 조사할 목적으로 사용된다.

메인 스레드 이름 main
내가 생성한(작업) 스레드 이름  (자동생성된다) Thread-n(스레드의 번호)
작업 스레드 이름 알기 thread.getName( );
작업 스레드 이름 변경 thread.setName("스레드 이름");
현재 스레드 객체 참조값 얻기 Thread thread = Thread.cuurentThread( );

스레드 우선순위

멀티 스레드는 동시성 또는 병렬성으로 실행된다.
동시성 병렬성
멀티 작업을 위해 하나의 코어에서
멀티 스레드가 번갈아가며 실행
멀티 작업을 위해 멀티 코어에서
개별 스레드를 동시에 실행

🔔 스레드 스케줄링

스레드의 개수가 코어의 수보다 많을 경우, 스레드를 어떤 순서로 동시성 있게 실행할것인가를 결정해야한다.

 

1. 우선 순위 방식 (Priority)

우선 순위가 높은 스레드가 실행 상태를 더 많이 갖는다. 

우선순위는 1 ~ 10까지 부여되며 기본적으로 5의 우선순위를 할당받는다. 

 

2. 순환 할당 방식 (Round - Robin)

시간 할당량을 정해서 하나의 스레드를 정해진 시간만큼 실행하고 이후에 다른 스레드를 실행한다. 


✔ 동기화 메소드, 동기화 블록

사용중인 스레드를 다른 스레드가 변경하지 못하도록 하기 위해서는

스레드 작업이 끝날 때까지 객체에 잠금을 걸어야한다 !

 

멀티 스레드 프로그램에서 단 하나의 스레드만 실행 할 수 있는 코드 영역을 임계 영역(critical section)이라고 한다. 

 

'🏃‍♀️ Do it ! > TIL' 카테고리의 다른 글

스레드 그룹 / 스레드폴 / 컬렉션 프레임워크  (0) 2022.09.27
스레드 상태 / 데몬 스레드  (0) 2022.09.26
Date , Calendar 클래스/ Format 클래스 / java.time 패키지  (1) 2022.09.22
String / StringTokenizer / StringBuffer , Builder / 정규표현식 , Pattern / Arrays / Wrapper 클래스  (0) 2022.09.21
예외 처리 / 자바 API / Object 클래스 / class 클래스 / tomcat설치  (0) 2022.09.20
  • ✔ 프로세스
  • ✔ 스레드
  • ✔ 동기화 메소드, 동기화 블록
'🏃‍♀️ Do it !/TIL' 카테고리의 다른 글
  • 스레드 그룹 / 스레드폴 / 컬렉션 프레임워크
  • 스레드 상태 / 데몬 스레드
  • Date , Calendar 클래스/ Format 클래스 / java.time 패키지
  • String / StringTokenizer / StringBuffer , Builder / 정규표현식 , Pattern / Arrays / Wrapper 클래스
버터감자
버터감자
🌱 새싹 개발자의 코딩 블로그 🌱

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.