본문 바로가기

반응형

자바공부

(75)
자바 고급 스윙 컴포넌트, 메뉴 만들기 * 스윙에 메뉴를 만들 수 있다. 1) JMenuBar 메뉴바의 기능을 구현한 클래스이다. 이곳에 JMenu로 만든 메뉴를 여러 개 단다. 2) JMenu 하나의 메뉴를 구현한 클래스이다. 이곳에 JMenu으로 만든 메뉴아이템을 여러 개 단다. 3) JMenuItem 하나의 메뉴아이템을 구현한 클래스이다. * 메뉴를 만드는 단계별 과정 1) JMenuBar 컴포넌트를 생성하여 메뉴바를 만든다. JMenuBar mb = new JMenuBar(); 2) JMenu 컴포넌트를 생성하여 메뉴를 만들고 메뉴바에 붙인다. 메뉴 이름은 문자열로서 JMenu의 생성자에 전달한다. 메뉴를 메뉴바에 붙일 때는 JMenuBar의 add() 메소드를 이용한다. // "File"메뉴를 만들어 메뉴바에 붙이는 Example J..
자바 스레드 동기화(Thread Synchronization) * 멀티스레드는 다수의 작업을 동시에 하게 하는 주요한 프로그래밍 도우깅다. 다수의 스레드가 공유 자원 혹은 공유 데이터에 동시에 접근할 때 예상치 못하는 경과를 낳을 수도 있다. * 다수의 스레드가 공유 자원에 동시 접근하는 두 사례 1) 공유 프린터에 동시 접근하는 경우 두 개의 프린터 스레드 A, B가 짧은 시간 간격을 두고 거의 동시에 프린팅을 실행하는 경우이다. 스레드 A가 간발의 차이로 프린팅을 먼저 시작하여 프린터를 소유하고 다른 스레드가 프린터에 접근하지 못하도록 조치를 취한 결과, 스레드 B가 스레드 A의 작업이 끝나기를 기다리고 있다. 공유 프린터에 대한 멀티스레드의 동시 접근을 순차화하면 첫번째 그림과 같은 문제는 발생하지 않는다. 2) 공유 집계판에 동시 접근하는 경우 * 멀티스레드..
명품자바프로그래밍13장 요약, 스레드와 멀티테스킹 * 멀티스레딩은 하나의 응용프로그램이 여러 개의 스레드를 생성하여 여러 작업을 동시에 처리하는 프로그래밍 방식이다. 자바는 멀티스레딩을 지원한다. * 자바 스레드는 JVM에 의해 관리되는 실행 단위 코드 블록이다. * 하나의 JVM은 하나의 자바 응용프로그램만을 실행하며 자바 응용프로그램이 시작될 때 JVM이 실행을 시작하고 자바 응용프로그램이 종료하면 JVM도 함께 종료한다. * 자바 스레드에 관한 정보는 스레드의 PC, 레지스터, 스레드 스택, 이름, ID, 상태 정보, 우선순위, 그룹 등이며 이들은 JVM에 의해 관리된다. * main() 메소드는 JVM에 의해 만들어진 main 스레드의 스레드 코드이다. * Thread 클래스를 상속받아 스레드 코드를 작성할 때는 run() 메소드를 오버라이딩하고..
자바 스레드 종료, 명품자바프로그래밍13장 * 스레드가 종료되는 경우는 스레드 스스로 종료하는 것과 다른 스레드에 의해 강제 종료되는 두 가지가 있다. * 스레드 스스로 종료하는 경우에는 run() 메소드에서 실행 중에 리턴하거나 run()를 완전히 실행하고 리턴하는 경우이다. public void run(){ ... return; // 스레드는 스스로 종료한다. ... } * 한 스레드가 다른 스레드를 강제로 종료할때는 종료시키고자 하는 스레드 객체의 interrupt() 메소드를 호출하면 된다. // Example public statc void main(String[] args){ TimerThread th = new TimerThread(); th.start(); th.interrupt(); // TimerThread 강제 종료 } mai..
자바 스레드 생명 주기와 스케줄링, 명품자바프로그래밍13장 * 스레드는 하나의 생명체이다. * 스레드는 태어나서 실행하고 종료하는 등 생명 주기(life cycle)를 가진다. 그리고 생명 주기 동안 여러 상태의 변이를 거친다. 스레드의 상태는 총 6가지이며 JVM에 의해 관리된다. 1) NEW 스레드가 생성되었지만 아직 실행할 준비가 되지 않은 상태이다. start() 메소드가 호출되면 RUNNABLE 상태가 된다. 2) RUNNABLE 스레드가 현재 실행되고 있거나 실행 준비되어 스케줄링을 기다리는 상태이다. 3) WAITING 스레드가 어떤 Object 타입의 객체 a에 대해 a.wait()을 호출하고 무한 대기하면서 다른 스레드가 a.notify(), a.notifyAll()을 불러주기를 기다리고 있는 상태이다. 스레드 동기화를 위해 사용된다. 4) TI..
자바 스레드 정보, 명품자바프로그래밍13장 * 자바에서 스레드 코드는 Thread의 run() 메소드나 Runnable 인터페이스의 run() 메소드에 작성하여 객체 속에 캡슐화하도록 되어 있다. start() 메소드가 호출되면 비로소 스레드는 생명을 가지고 실행되게 된다. JVM에 의해 탄생된 스레드마다 흔히 Thread Control Block(TCB)이라고 불리는 스레드 관리 정보가 만들어진다. * 스레드 관리 정보(TCB) 필드 타입 내용 스레드 이름 스트링 스레드의 이름으로서 사용자가 지정 스레드 ID 정수 스레드 고유의 식별자 번호 스레드의 PC(Program Count) 정수 현재 실행 중인 스레드 코드의 주소 스레드 상태 정수 NEW, RUNNABLE, WAITING, TIMED_WAITING, BLOCK, TERMINATED 등 ..
자바 스레드만들기, 명품자바프로그래밍13장 * 자바 스레드를 만들기 위해 개발자는 두 가지 작업을 해야한다. 1) 스레드 코드 작성 2) JVM에게 스레드를 생성하여 스레드 코드를 실행하도록 요청 * 자바 스레드를 만드는 방법 2가지 1) Thread 클래스 이용 2) Runnable 인터페이스 이용 * Thread 클래스의 경로명은 java.lang.Thread이다. Thread 클래스는 스레드를 만들고 유지 관리하기 위해 많은 메소드를 제공 Thread의 메소드 내용 Thread() Thread(Runnable target) Thread(String name) Thread(Runnable target, String name) 단순한 스레드 객체 생성 Runnable 객체인 target을 이용하여 스레드 객체 생성 이름이 name인 스레드 객체..
자바 멀티스레딩, 명품자바프로그래밍13장 * 자바에는 프로세스 개념이 존재하지 않고 스레드 개념만 존재하며 자바 가상 기계(JVM)는 멀티스레딩만 지원한다. 자바 스레드(java thread)란 JVM에 의해 스케쥴되는 실행 단위 코드 블록이다. * 하나의 JVM은 하나의 자바 으용프로그램만 실행한다. JVM이 실행될 때 JVM이 자바 으용프로그램을 로딩하여 실행시킨다. 자바 응용프로그램이 종료되면 JVM도 함께 종료된다. * 각 자바 응용프로그램은 별개의 메모리 영역에서 독립적으로 실행된다. JVM은 멀티스레딩을 지원하며 따라서 자바 응용프로그램은 하나 이상의 스레드를 생성할 수 있다. * 두 개의 자바 응용프로그램을 실행하는 경우를 보여 주는데, 하나의 응용프로그램이 실행되면 이를 위해 하나의 JVM이 실행되며, 두 응용프로그램이 서로 정보..

반응형