버터감자
오늘도 내 하루는
버터감자
전체 방문자
오늘
어제
  • 분류 전체보기 (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)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
버터감자

오늘도 내 하루는

프로세스 / 스레드 / 동기화 메소드, 동기화 블록
🏃‍♀️ 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 클래스
    버터감자
    버터감자
    🌱 새싹 개발자의 코딩 블로그 🌱

    티스토리툴바