옝옹
냠
옝옹
전체 방문자
오늘
어제
  • 분류 전체보기 (84)
    • [LG유플러스]유레카 SW (5)
    • React (20)
    • JS (17)
    • TypeScript (5)
    • CSS & HTML (1)
    • 알고리즘 (11)
    • JAVA (20)
    • GIT (1)
    • 자격증 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 자바스트립트
  • indexOf()
  • reverse() 메서드
  • map
  • map() 함수
  • java.lang패키지
  • sort() 메서드
  • 함수선언
  • reduce
  • switch문
  • useRef
  • 정적멤버
  • 자바
  • useMemo
  • 기본api클래스
  • 혼자공부하는자바
  • Node.js
  • 백준
  • 리액트
  • 리액트를다루는기술
  • JavaScript
  • 화살표함수
  • fillter
  • TypeScript
  • 타입스크립트
  • continue문
  • break문
  • useState
  • ==
  • 변수선언
  • 자바스크립트
  • useCallback
  • useEffect
  • 타입변환
  • match()
  • While문
  • template literal
  • 혼자 공부하는 자바
  • toFixed
  • 노마드코더
  • do-while문
  • java
  • js
  • 접근제한자
  • 인스턴스멤버
  • java.util패키지
  • 코드스플리팅
  • 템플릿리터럴
  • join()
  • join() 메서드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
옝옹

냠

멀티 스레드
JAVA

멀티 스레드

2022. 12. 5. 17:13

프로세스

  • 운영체제에서는 실행 중인 하나의 애플리케이션
  • 사용자가 애플리케이션을 실행하면 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는데 이것이 프로세스이다.

멀티프로세스

  • 운영체제에서 할당받은 자신의 메모리를 가지고 실행하기 때문에 각 프로세스는 서로 독립적이다.
    • 하나의 프로세스에서 오류가 발생해도 다른 프로세스에 영향을 미치지 않는다.

멀티 스레드

  • 하나의 프로세스 내에 동시 실행을 하는 스레드들이 2개 이상인 경우
  • 하나의 프로세스 내부에 생성되기 때문에 하나의 스레드가 예외를 발생시키면 프로세스 자체가 종료될 수 있음
    • 다른 스레드에 영향을 미침 

메인 스레드

  • 자바의 모든 애플리케이션은 메인 스레드가 main() 메소드를 실행하면서 시작한다.
  • 메인 스레드는 main() 메소드의 첫 코드부터 아래로 순차적으로 실행하고, main() 메 
    소드의 마지막 코드를 실행하거나 return문을 만나면 실행이 종료된다

  • 메인 스레드는 필요에 따라 작업 스레드들을 만들어서 병렬로 코드를 실행할 수 있다
    • 즉, 멀티스레드를 생성해서 멀티 태스킹을 수행합니다.

작업 스레드

  • 메인 작업 이외에 병렬 작업의 수만큼 생성하는 스레드
  • 작업 스레드도 객체로 생성되기 때문에 클래스가 필요

 

  • Thread 클래스를 직접 객체화해서 생성
    • java.lang.Thread 클래스로부터 작업 스레드 객체를 직접 생성하려면 다음과 같이 Runnable을 
      매개값으로 갖는 생성자를 호출

  • Thread 클래스를 상속해서 하위 클래스를 만들어 생성
    • 작업 스레드가 실행할 작업을 Runnable로 만들지 않고, Thread의 하위 클래스로 작업 스레드를 
      정의하면서 작업 내용을 포함시킬 수 있음

동기화 메소드

  • 임계 영역 : 멀티 스레드 프로그램에서 단 하나의 스레드만 실행할 수 있는 코드 영역
  • 자바는 임계 영역을 지정하기 위해 동기화synchronized 메소드를 제공
  • 스레드가 객체 내부의 동기화 메소드를 실행하면 즉시 객체에 잠금을 걸어 다른 스레드가 동기화 메소드를 실행하지 못하도록 함.
  • 동기화 메소드를 만들려면 메소드 선언에 synchronized 키워드를 붙이면 됨
    • 인스턴스, 정적메소드 모두 붙일 수 있음

 

확인 문제

4. 스레드 실행을 시작하려면 run() 메소드를 호출해야 한다.

1. new MusicRunnableO
2. extends Thread
3. implements Runnable

2. 스레드가 동기화 메소드를 실행할 때 다른 스레드는 일반 메소드를 호출할 수 없다.

저작자표시 비영리 변경금지 (새창열림)

'JAVA' 카테고리의 다른 글

스레드 제어  (0) 2022.12.05
java.util 패키지  (0) 2022.11.30
java.lang 패키지  (3) 2022.11.30
익명 객체  (0) 2022.11.15
중첩 클래스와 중첩 인터페이스  (2) 2022.11.15
    'JAVA' 카테고리의 다른 글
    • 스레드 제어
    • java.util 패키지
    • java.lang 패키지
    • 익명 객체
    옝옹
    옝옹

    티스토리툴바