[Java] Thread
- BACKEND/Java
- 2017. 11. 1. 15:11
● Thread (1) Process and Program Process - 실행중인 프로그램 cpu가 사용할수있도록 보조기억장치에서 주기억장치로 프로그램을 이동할때 사용 Program - 실행중이 아닌 프로그램 Multi Process - 시분할 작업, 여러 프로그램을 실행하는 것 Multi Processor 스케줄링 해주는 것이 OS Thread : 하나의 프로세스 안에서 실행되는 작업 단위 (2) Multi Thread (3) 자바에서 지원하는 스레드 기법 1) Thread클래스 상속 2) Runnable인터페이스 상속 (대안) (4) 모든 자바클래스는 반드시 하나의 스레드를 가지고 있다. : main() -> 메인 스레드 : run() -> 자식 스레드가 해야할 일을 적어주는 곳 (5) Thread의 Lifecycle Start -> Run -> 종료 ( 종료의 두가지 방법 : 자연스러운 종료, 강제종료) Suspend() -> Thread가 강제로 잠시 일을 쉬게 해주는 것 하지만 권장하지 않는 방법 resume() -> Suspend()로 쉬고 있는 Thread를 깨우는 것 Sleep() -> 가장 많이 쓰는 방법은 시간이 지나면 Start로 가서 처음부터 다시 실행된다. block() -> 일시적인 차단 방법, 하드웨어적 처리 방법 yield() -> 현재 실행하고 있는 Thread를 쉬게 하는 메소드 wait() -> 현재 실행하고 있는 Thread를 강제로 쉬게 하는 메소드, 동기화일때 사용가능 notify() -> Wait()로 쉬고 있는 Thread를 쉬게 하는 메소드 (6) synchronized 1) 메소드 앞에 사용 2) synchronized(공유객체){ 코드 ... } 동기화는 한번에 하나씩 처리하는것인데 동시에 처리하려고 했기 때문에 동기화가 깨진다. 동기화의 효율을 높이기 위해 사용하는 대표적인 알고리즘 - 뮤텍스(Mutex)와 세마포어(Semaphore) (7) 강제종료 3가지 1) Stop() //가장 쓰면 안되는 방법중 하나 2) interrupt() 3) 직접처리 8) 종료 시점 1) isAlive() -> Thread에게 살아있냐고 물어보는 메소드, 종료하는 것은 코드를 직접 만들어줘야한다. 2) Join() -> Join()은 모든걸 처리해주는 메소드 훨씬 편해서 주로 사용된다. |
'BACKEND > Java' 카테고리의 다른 글
[Java] IO 예제 (0) | 2017.11.02 |
---|---|
[Java] Thread 예제 (0) | 2017.11.02 |
[Java] IO (0) | 2017.10.30 |
[Java] Exception (0) | 2017.10.30 |
[Java] 연습코딩-2 (0) | 2017.10.27 |