자바 쓰레드4 [JAVA 기초] 쓰레드(Thread) 4 - 쓰레드의 상태 싸이클과 제어 메서드 1 쓰레드의 상태 싸이클 New 상태 : "new MyThread();"한 상태, 아직은 JVM은 이를 'Thread'라고 생각하지 않음. Runnable 상태 : "start();" 한 상태와 Waiting 상태에서 (ex. interrupt(),notify(),notifyall() 해줬을 때 이제 JVM은 이를 'Thread'라고 생각함. JVM의 '쓰레드 스케줄러'에 의해서 선택될 수 있는 상태. Running 상태 : "run();" 가 실행되고 있는 상태. Blocked 상태 : Waiting 상태라고도 한다. (ex. sleep(), join() wait() 등) 쓰레드가 잠시 정지된 상태 Dead 상태 : Thread 실행에 필요한 관련 정보들이 메모리로부터 소멸되어 사라진 상태. 쓰레드가 .. 2021. 4. 13. [JAVA 기초] 쓰레드(Thread) 3 - 동기화(Synchronized)와 데몬쓰레드(Daemon Thread) 1 동기화(Synchronized) 두 쓰레드가 같은 프로세스 내의 자원을 공유하기 때무네 서로의 작업에 영향을 준다. 예를 들어 통장에 10만원이 있고 다른 두 ATM기기에서 돈을 꺼내려 한다. 두 ATM 기기에서 만약 6만원 6만원씩 꺼낼 수도 있기 때문에 동시에 출금이 가능하게 해서는 안된다. 따라서 한 ATM 기기를 사용할때 락을 걸어 다른 ATM에서 접근하지 못하도록 해야할 것이다. 이처럼 한 쓰레드에서 사용하는 자원을 다른 쓰레드가 간섭하지 못하도록 락(rock)을 거는 것을 쓰레드의 동기화라고 한다. 여러개의 메서드들이 공유 객체를 사용할 때 동기화를 시켜줬을 경우 0.000001초라도 메서드가 먼저 실행되면 해당 객체에 사용권을 얻게된다. 이 사용권을 모니터링 락이라고 부른다. 이렇게 되면.. 2021. 4. 13. [JAVA 기초] 쓰레드(Thread) 2 - 쓰레드 생성방법2 와 쓰레드 우선순위(setPriority) 1 Thread(쓰레드) 생성 쓰레드는 기본적으로 1개의 쓰레드를 갖고 있다. 따라서 순차적 구조로 위에서 시작해 아래로 코드를 실행시킨다. 여기서 쓰레드를 새로 생성시키게 되면 2개 이상의 코드를 동시에 실행시킬 수 있다. 쓰레드의 생성방법 2 1. implements Runnable 한 클래스를 정의. 2. run() 메서드를 오버라이드. 3. Runnable 객체 생성 4. Thread 객체 생성하고 생성자 호출시 Runnalble 객체의 참조값을 생성자 파라미터에 담아줌. 5. Thread 객체.start() 호출. 쓰레드를 생성하는 방법이 두가지인 이유는 자바가 다중상속이 불가하기 때문이다. 따라서 어떤 클래스를 상속받는 클래스에 쓰레드를 적용해야 할 경우 위의 방법으로 쓰레드를 생성한다. Ex.. 2021. 4. 12. [JAVA 기초] 쓰레드(Thread) 1 - 쓰레드 생성방법1 1 Thread(쓰레드) 생성 쓰레드는 기본적으로 1개의 쓰레드를 갖고 있다. 따라서 순차적 구조로 위에서 시작해 아래로 코드를 실행시킨다. 여기서 쓰레드를 새로 생성시키게 되면 2개 이상의 코드를 동시에 실행시킬 수 있다. 쓰레드의 생성방법 1 1. "extends Thread" 쓰레드 클래스를 상속받는 클래스를 작성한다. 2. run()메서드를 오버라이드 한다. 3. 이 클래스를 기반으로 객체를 생성한다. 4. start() 호출하면 적절한 시전에 run() 메서드가 실행된다. run()메서드를 직접호출하지 않는다. strat() 를 호출하면, 적절한 시점에 run()메서드가 자동으로 실행하게 된다. run()의 실행이 완료되면 해당 thread는 종료되고 소멸된다. 아직 실행중인 thread 가 하.. 2021. 4. 12. 이전 1 다음