본문 바로가기

반응형

언어

(188)
자바 고급 스윙 컴포넌트, 툴바 ToolBar * JToolBar는 툴바를 구현한 컴포넌트이다. 툴바는 바(Bar) 모양으로서 다양한 스윙 컴포넌트를 담을 수 있는 컨테이너이다. 툴바는 아이콘 형태의 메뉴를 제공하기 위해 사용된다. * 툴바는 BorderLayout 배치관리자를 가진 컨테이너에만 부착되며 동(EAST), 서(WEST), 남(SOUTH), 북(NORTH)의 아무 곳이나 부착 가능하다. 사용자는 실행 중에 보이는 툴바의 핸들을 드래깅하여 4개의 영역 중 아무 곳이나 옮길 수 있다. 뿐만 아니라 사용자가 툴바의 핸들을 드래깅하여 4개의 영역 중 어디에도 붙이지 않고 독립적으로 떠다니게(floatable)할 수도 있다. * 툴바를 만드는 과정 1) JToolBar 객체를 생성한다. JToolBar의 생성자에 툴바 이름을 전달한다. //"Ki..
자바 고급 스윙 컴포넌트, 메뉴 만들기 * 스윙에 메뉴를 만들 수 있다. 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인 스레드 객체..

반응형