뇌운동일지

[JAVA20] Thread, Wrapper class 본문

JAVA

[JAVA20] Thread, Wrapper class

purpleduck 2020. 3. 24. 12:23

thread 

: 어떤 일을 처리하는 논리적인 단위 ( 로직이나 함수실행 ) 

단일스레드 : 하나의 프로그램을 불러서 처리 

멀티스레드 ( multi thread ) : 병렬적으로 동시에 실행 

동시에 처리해야 하는 프로그램에 멀티스레드 활용, 자원을 공유한다 

 

1. runnable interface를 적용(implements)하거나 thread class를 상속(inheritance, extends)받아야 함. 

2. 동시성을 갖게하고 싶은 영역(=multi thread로 구현하고 싶은 영역)을 run() method로 감싼다. 

run()은 구현만 가능, 호출은 불가 

start()를 사용한다 

start()를 통해 JVM내에 thread scheduler 에 등록, JVM이 run()을 호출해서 실행하게 된다 

 

callback method : JVM에 의해 자동으로 호출되는 method        ex) run()

run()을 바로 호출하면 실행은 되나, 멀티스레드로 구현되지 않기 때문에 의미가 없음 

 

Thread class는  Runnable interface의 구현 클래스이다. 

Runnable interface에는 run()의 추상메서드만 있음.

start()를 사용하기 위해서는 Thread class가 필요하다. 

 

동시성 

sleep()

 

우선순위 : 특정스레드에 우선권을 부여

setPriority(순위)    // 1(낮음) ~10(높음)

1 == MIN_PRIORITY

5 == NORM_PRIORITY

10 == MAX_PRIORITY 

 

동시성과 우선순위를 함께 사용해서는 안됨 

 

synchronized (동기화)

: 2개 이상의 thread가 동시에 접속하는 것을 방지함

멀티쓰레드를 적용했을 때 동시성이 커져서 발생하는 문제를 방지하기 위해

 

1. 객체변수

2. 함수 

두 가지에서만 synchronized 적용가능 

 

기본형은 wrapper class를 활용해서 객체변수로 만든 다음 sychronized를 적용 

 

http://tcpschool.com/java/java_api_wrapper

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

Comments