본문 바로가기

전체 글

(229)
[스레드] 6. 스레드 상태제어(1) 상태제어 - 실행중인 스레드의 상태를 변경하는 것을 말한다. - 상태변화를 가져오는 메소드의 종류 ※ 주어진 시간동안 일시정지 - sleep() try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } - 얼마동안 일시 정지 상태로 있을 것인지, 밀리세컨드(1/1000초) 단위로 지정 - 일시정지 상태에서 interrupt() 메소드가 호출되면 InterruptedException 발생 예제: package threadsleep; import java.awt.*; public class SleepExample { public static void main(String[] args) { Toolkit toolkit..
[스레드] 5. 스레드 상태 객체 생성 NEW : 스레드객체가 생성, 아직 start() 메소드가 호출되지 않은 상태 실행대기 RUNNABLE : 실행 상태로 언제드지 갈 수 있는 상태 일시정지 BLOCKED : 사용하고자하는 객체의 락이 풀릴 때 까지 기다리는 상태 WAITING : 다른 스레드가 통지할 때까지 기다리는 상태 TIMED_WAITING : 주어진 시간 동안 기다리는 상태 종료 TERMINATED : 실행을 마친 상태 예제: package thread_state; public class ThreadStateExample { public static void main(String[] args) { StatePrintThread spt = new StatePrintThread(new TargetThread()); spt...
[스레드] 4. 동기화 메소드와 동기화 블록 예제1 package test; /* 공유 객체를 사용할 때의 주의할 점 - 멀티 스레드가 하나의 객체를 공유해서 생기는 오류 동기화 메소드 및 동기화 블록 - synchronized - 단 하나의 스레드만 실행할 수 있는 메소드 또는 블록. - 다른 스레드는 메소드나 블록이 실행이 끝날 때까지 대기. */ public class Main { // 동기화 메소드 public synchronized void method1() { // 임계 영역; -- 단하나의 스레드만 실행 } // 동기화 블록 synchronized (/*공유객체*/) { // 임계 영역; -- 단하나의 스레드만 실행 } public static void main(String[] args) { } } 예제2: 동기화되지 않은 메소드 pa..