Development/Java(855)
-
stop() - Deprecated, 스레드 안전한 종료 방법-stop 플래그를 통한 스레드 종료 유도, interrupt()메소드를 이용한 방법, interrupted()와 isInterrupted()를 이용한 방법
stop() - Deprecated · 스레드는 자신의 run() 메소드가 모두 실행되면 자동적으로 종료됩니다.· 경우에 따라서 기능 실행 중인 스레드를 즉시 종료할 필요가 있습니다. 예를 들어 동영상 시청 중 보는 중간에 멈추거나 파일 다운로드 중 중간에 중지하기 등을 예로 들 수 있습니다.· Thread 클래스는 스레드를 즉시 종료시키기 위해서 stop() 메소드를 제공합니다· stop() 메소드로 스레드를 갑자기 종료시키면 스레드가 사용 중이던 자원(파일, 네트워크 등)들이 불안전한 상태로 남겨지기 때문에 해당 메소드는 Deprecated 되었습니다. 스레드 안전한 종료 방법· stop 플래그를 통한 스레드 종료 유도· interrupt()메소드를 이용한 방법· interrupted()와 isInt..
-
생산자 스레드와 소비자 스레드 모델
생산자 스레드와 소비자 스레드 모델데이터를 저장하는 스레드(생산자 스레드)가 데이터를 저장하면, 데이터를 소비(처리)하는 스레드(소비자 스레드)가 데이터를 읽고 처리하는 교대 작업을 구현하는 방법입니다. 생성자 스레드는 소비자 스레드가 읽기 전에 새로운 데이터를 두번 생성하면 안되고, 소비자 스레드는 생성자 스레드가 새로운 데이터를 생성하기 전에 이전 데이터를 두번 읽어서는 안됩니다.
-
Critical Section(임계영역; 임계구역)
Critical Section(임계영역; 임계구역)· 크리티컬 섹션은 한번에 한 스레드만 사용할 수 있는 코드 영역입니다.· 한 쓰레드가 특정 작업을 마치기 전까지 다른 쓰레드에 의해 작업을 방해받지 않도록 하는 것입니다.· 멀티 스레드에 의해 공유자원이 서로 참조될 수 있는 코드 범위입니다.· 병렬컴퓨팅에서 둘 이상의 스레드가 동시에 접근해서는 안 되는 공유자원(자료 구조 또는 장치)을 접근하는 코드부분을 말합니다.· 공유 데이터(객체)를 사용하는 코드 영역을 임계영역으로 지정해놓고, 공유 데이터가 가지고 있는 lock을 획득한 한 쓰레드만 이 객체의 영역 내의 코드를 수행할 수 있도록 합니다. 해당 쓰레드가 임계 영역내의 모든 코드를 수행하고 이 영역을 벗어나면서 lock을 반납하게 되면 이 때 다른..
-
스레드 스케줄링(Thread Scheduling), 스레드 스케줄링 방식, 스레드 스케줄러, 스레드 우선순위, , Thread 클래스의 우선순위를 정하는 멤버변수, 선점형 스레드 스케줄링 방식, 순환할당(Round-Robin)방..
스레드 스케줄링(Thread Scheduling)스레드의 개수가 코어의 수보다 많을 경우, 스레드를 어떤 순서에 의해 동시성을 실행할 것인가를 결정해야 하는데 이것이 스레드 스케줄링입니다.스레드 스케줄러에 의해 여러 스레드들이 아주 짧은 시간동안 번갈아가면서 스레드의 run()메소드를 조금씩 실행하게 됩니다. 스레드 스케줄링 방식· 선점형 스레드 스케줄링 방식은 스레드의 우선권을 가지고 우선순위(Priority)가 높은 스레드를 먼저 수행시키는 방식입니다.· 협력형 스레드 스케줄러는 실행중인 스레드가 CPU 사용권을 다른 스레드에게 넘길 때까지 기다리는 방식· JVM은 우선순위에 따른 선점형 스레드 스케줄링 방식을 사용하고 있습니다. 순환할당(Round-Robin)방식우선순위 방식으로 순환할당(Round..
-
Listener vs Adapter, 이벤트 어댑터 클래스(Adapter Class), Adapter 클래스 종류, Adapter 클래스 활용 방법
이벤트 어댑터 클래스(Adapter Class)· 이벤트를 처리하기 위하여 이벤트 리스너를 등록하여 처리를 해주어야 합니다.· 리스너가 인터페이스로 되어 있어 리스너에 선언되어 있는 추상메서드를 모두 오버라이드해야 사용이 가능합니다. 즉, 사용하지 않는 메서드까지도 모두 오버라이드하여 완성을 시켜야 사용 할 수 있습니다.(번거롭고 불편한 작업)· 그래서 자바 API에는 이러한 작업을 좀 더 쉽게 처리할 수 있도록 Adapter라는 클래스를 제공합니다.· Adapter 클래스는 이벤트 리스너 인터페이스들 중에서 추상메서드가 2개 이상 존재하는 인터페이스를 구현한 추상 클래스입니다.· 인터페이스에 있는 모든 메서드를 빈(Empty) 메서드로 재정의 하였기 때문에 인터페이스를 구현하여 불필요한 메서드를 재정의..
-
AWT(Abstract Window Toolkit) - GUI 프로그래밍(Graphic User Interface), java.awt 패키지 구조도(상속계층도)
GUI 프로그래밍(Graphic User Interface) GUI는 DOS(CUI방식)와 같은 방식의 텍스트 기반 운영체제가 아닌 그래픽(Graphic)을 이용하여 사용자와 프로그램 간의 상호작용을 할 수 있도록 해주는 인터페이스를 의미 자바에서 이러한 그래픽 기반 프로그래밍을 지원하기 위해 나온 것이 바로 AWT AWT의 기본 개념 AWT(Abstract Window Toolkit)는 GUI 프로그래밍을 제작하기 위해 자바에서 제공하는 라이브러리를 모아놓은 것(GUI 환경을 구축하기 위한 자바 API) AWT는 모든 GUI 프로그램에 사용되는 컴포넌트 및 툴킷을 제공하고 있으며 JFC와 같은 스윙(Swing) 및 Java2D의 모태가 되는 개념 버튼, 체크박스 등의 콤포넌트와 이벤트 처리를 위한 인터..