2019/03

스레드 상태제어 스레드를 일시정지 상태로 만들거나, 정지된 스레드를 다시 실행시키거나 하는 행위 즉, 실행 중인 스레드의 상태 변경하는 것을 스레드 상태 제어라고 한다.몇 가지 스레드 상태 제어 함수를 알아보자다른 스레드에게 실행 양보(yield())스레드 실행 양보 예제ThreadA 정의 public class ThreadA extends Thread{ public boolean stop = false; // 종료 플래그 public boolean work = true; // 작업 진행 여부 플래 public void run() { while(!stop) { if(work) { System.out.println("ThreadA가 작업중입니다."); }else { Thread.yield(); // wor..
스레드 상태 처음에 start() 메소드를 호출하면 곧바로 스레드가 실행되는 것처럼 보이지만 사실은 실행 대기 상태가 된다. 스레드 스케줄링으로 선택된 스레드가 비로서 CPU를 점유하고 run()메소드를 실행한다. => 실행(Running)상태 상태열거 상수설명 객체 생성NEW스레드 객체가 생성, 아직 start() 메소드가 호출되지 않음실행 대기RUNNABLE실행 상태로 언제든지 갈 수 있는 상태일시 정지WAITING다른 스레드가 통지할 때까지 기다리는 상태일시 정지TIMED_WAITING주어진 시간 동안 기다리는 상태일시 정지BLOCKED사용하고자 하는 객체의 락이 풀릴 때까지 기다리는 상태종료TERMINATED실행을 마친 상태 예제 코드 public class StatePrintThread exte..
동기화 메소드와 동기화 블록 공유 객체를 사용할 때 주의할 점멀티 스레드 프로그램에서는 스레드들이 객체를 공유해서 작업해야 하는 경우가 있다.이 경우, 스레드 A를 사용하던 객체가 스레드 B에 의해 상태가 변경될 수 있기 때문에 스레드 A가 의도했던 것과는 다른 결과를 산출할 수도 있다. public class User1 extends Thread{ private Calculator calculator; @Override public void run() { calculator.setmemory(100); } public void setCalculator(Calculator calculator) { this.setName("User1"); this.calculator = calculator; } } pub..
깡냉쓰
'2019/03 글 목록 (5 Page)