JAVA 쓰레드(Thread)
쓰레드 프로세스내에서 프로그램의 흐름을 형성하는 주체를 쓰레드라고 함 하나의 프로세스 내에 둘 이상의 쓰레드가 존재할 수 있기 때문에 프로세스 내에서 둘 이상의 프로그램 흐름 형성 가능 쓰레드는 자신만의 메모리 공간을 할당 받아 별도 실행흐름 형성 main 메소드도 쓰레드에 의해 실행 되고, 이 외에 다른 쓰레드가 실행되는 중에 main이 종료되어도 다른 쓰레드는 계속 실행됨 쓰레드는 자바 가상머신에서 생성하기 때문에 인스턴스와는 다름 쓰레드는 생성하는 방법 Thread 클래스를 상속하는 방법 혹은 인터페이스를 활용한 구현 ex)Runnable 인터페이스를 구현하고 이로 만들어낸 인스턴스를 Thread 클래스로 받아와서 인스턴스를 생성하여 쓰레드 생성 및 실행 join 메소드는 쓰레드의 작업이 끝날 때 까지 대기하는 메소드 쓰레드의 스케쥴링 둘 이상의 쓰레드가 생성되는 것을 대비해 가상머신이 실행하는 것 원칙은 우선순위가 높은 쓰레드 우선실행 동일한 우선순위의 쓰레드가 둘 이상 존재할 때는 CPU 할당시간 분배해서 실행 CPU의 할당이 힐요치 않은 입출력을 처리하는 상황에서는 쓰레드는 CPU를 차지하지 않고 다른 쓰레드에게 넘겨주어서 우선순위가 낮은 쓰레드들이 실행이 될 수 있는 기회를 제공 쓰레드의 싸이클 New : 클래스가 키워드 new를 통해 인스턴스화 된 상태 Runnable : start메소드가 호출되어 실행 대기 상태 Blocked : Sleep, Join 같은 메소드로 CPU를 다른 쓰레드에게 양보한 상태 Dead : run 메소드를 빠져나와 쓰레드의 실행을 위해 할당 받았던 메모리를 비롯, 각종 쓰레드 관련정보가 완전히 사라진 상태 쓰레드의 메모리구성 run 메소드가 호출되고 이 안에서 다른 메소드를 호출하며 main 메소드와 다른 흐름을 형성하는데 이는 별도의 스택이 쓰레...