IMS 마무리 및 제출
- 멀티 스레드(Multi-Thread) 프로그래밍
스레드란? - 실행중인 하나의 프로그램(프로세스) 내에서 독립적으로 실행되는 연속적인 작업 흐름(일련의 수행코드)을 의미한다.
JVM에 의해서 하나의 스레드가 만들어진다. 메인스레드라고한다. 단일 스레드방식(현재까지) 단일 스레드를 메인스레드라고한다. 메인스레드에 의해 main()(메인메서드)이 호출된다.
운영체제는 멀티 태스킹을 자바에서는 멀티 스레드를 가능하도록한다.
멀티태스킹 - 독립된 메모리에 존재하여 OS가 프로그램을 제어한다.
멀티스레드 - 메모리 공유자원을 절약, 여러개의 코드가 실행될수있다. 자원절약과 효율적인 병행 프로그래밍 가능하다.
논리적으로는 병행되지만 물리적으로 한주기에는 하나의 동작만 수행된다. 매우 짧은 순간 마다 하나의 실행이 수행된다.
JVM 자체도 멀티스레드로 동작한다.
사용자 정의 스레드의 엔트리포인트는 run이고 꼭 필요하다.
스레드 시작시 바로 그시점에서 시작되지않는다. 시작되는대까지 시간이 약간있다.
그냥 this는 현재 클래스에 대한정보를 가져오지만
클래스명.this 하면 대상 클래스의 래퍼런스를 가져온다.
이름없는 지역 내부 클래스로 구현가능하다.
- 스래드의 생명주기(life cycle)
생성(new) -> 실행대기(Runnable) -> 실행(Running) -> 종료(Dead)
start() : 실행가능상태
스캐줄러 관리
생명주기를 배우는 가장큰의미는 다음과같다
블락상태 : 대기, 수면, 유보, 봉쇄의 4가지상태를 알아야한다.
stop() 도 Deprecated되었다.
유보 : suspend(), resume()은 Deprecated되엇다.
yield()를 호출하면 바로 실행대기상태로 간다.
Dead된 스레드는 다시시작할 수 없다.
스레드로 디지털시계 만들기
while문안에서 repaint를 호출, paint안에서 캘린더를 새로그릴때마다 받아와서 넣어준다.
- 스레드 동기화
공유된 객체를 접근할때 작업을 마무리할수있도록 자물쇠를 잠그는것
synchronized 키워드를 클래스명 앞에 붙여주면 클래스 자체가 동기화된다.
'JAVA 계열 > 자바 & 안드로이드 교육' 카테고리의 다른 글
8월 1주차 5일 (5주) (0) | 2015.08.07 |
---|---|
8월 1주차 4일 (5주) (0) | 2015.08.06 |
8월 1주차 2일 (5주) (0) | 2015.08.04 |
8월 1주차 1일 (5주) (0) | 2015.08.03 |
7월 4주차 5일 (4주) (0) | 2015.07.31 |