Java
-
[Java] JavaFX - 이벤트 처리, 속성 감시, 바인딩CSE/Java 2015. 12. 21. 11:56
JavaFX는 여러 절로 구성되어 있습니다. Intro JavaFX 레이아웃(Layout) JavaFX 컨테이너(Container) JavaFX 이벤트 처리 & 속성 감시, 바인딩 JavaFX 컨트롤(Control) JavaFX 메뉴바와 툴바 & 다이얼로그 JavaFX 스레드 동시성 JavaFX 이벤트 처리 UI 어플리케이션은 사용자와 상호작용을 하면서 코드를 실행합니다. 사용자가 UI 컨트롤을 사용하면 이벤트(event)가 발생하고 프로그램은 이벤트를 처리하기 위해 코드를 실행합니다. 이벤트 핸들러(EventHandler) JavaFX는 이벤트 발생 컨트롤과 이벤트 핸들러를 분리하는 위임형(Delegation) 방식을 사용합니다. 위임형 방식이란 컨트롤에서 이벤트가 발생하면, 컨트롤이 직접 처리하지 않..
-
[Java] JavaFX - 컨테이너(Container)CSE/Java 2015. 12. 14. 17:44
JavaFX는 여러 절로 구성되어 있습니다. IntroJavaFX 레이아웃(Layout)JavaFX 컨테이너(Container)JavaFX 이벤트 처리 & 속성 감시, 바인딩JavaFX 컨트롤(Control)JavaFX 메뉴바와 툴바 & 다이얼로그JavaFX 스레드 동시성 JavaFX 컨테이너(Container) 레이아웃을 작성할 때 컨트롤들을 쉽게 배치할 수 있도록 도와주는 클래스가 컨테이너입니다. javafx.scene.layout 패키지에는 다양한 컨테이너 클래스들이 존재합니다. AnchorPane 컨테이너 AnchorPane 컨테이너는 좌표를 이용하여 AnchorPane의 좌상단(0, 0)을 기준으로 컨트롤을 배치합니다. 컨트롤 좌표는 좌상단(layoutX, layoutY) 값을 말하는데 (0, ..
-
[Java] JavaFX - 레이아웃(Layout)CSE/Java 2015. 12. 14. 14:33
JavaFX는 여러 절로 구성되어 있습니다. Intro JavaFX 레이아웃(Layout) JavaFX 컨테이너(Container) JavaFX 이벤트 처리 & 속성 감시, 바인딩 JavaFX 컨트롤(Control) JavaFX 메뉴바와 툴바 & 다이얼로그 JavaFX 스레드 동시성 JavaFX 레이아웃(Layout) 장면에는 다양한 컨트롤이 포함되는데 이들을 배치하는 것이 레이아웃(Layout)입니다. 레이아웃을 작성하는 방법은 두 가지로 나뉩니다. - 코드로 작성하는 프로그램적 레이아웃 - FXML로 작성하는 선언적 레이아웃 프로그램적 레이아웃 자바코드로 UI 컨트롤을 배치하는 것을 말합니다. 자바 코드에 익숙한 개발자들이 선호하는 방식으로 컨트롤 배치, 스타일 지정, 이벤트 처리 등을 모두 자바 코..
-
[Java] JavaFX - IntroCSE/Java 2015. 12. 14. 12:34
JavaFX는 여러 절로 구성되어 있습니다. IntroJavaFX 레이아웃(Layout)JavaFX 컨테이너(Container)JavaFX 이벤트 처리 & 속성 감시, 바인딩JavaFX 컨트롤(Control)JavaFX 메뉴바와 툴바 & 다이얼로그JavaFX 스레드 동시성 Intro JavaFX는 크로스 플랫폼(Cross-Platform)에서 실행하는 리치 클라이언트 어플리케이션(Rich Client Application)을 개발하기 위한 그래픽과 미디어 패키지를 말합니다. JavaFX는 Java 7부터 JDK에 포함되어 있기 때문에 별도의 SDK 설치 없이도 사용 할 수 있습니다. JavaFX는 Swing보다 더 가벼워졌고 더 강력해졌기 때문에 Swing을 대체하는 새로운 라이브러리로 자리매김을 하고 ..
-
[Java] 멀티 스레드 - 스레드풀(ThreadPool)CSE/Java 2015. 12. 13. 14:27
멀티 스레드는 여러 절로 구성되어 있습니다. Intro작업스레드스레드 우선순위 & 동기화 메소드와 동기화 블록스레드 상태 & 상태 제어스레드 상태 제어 2데몬 스레드 & 스레드 그룹스레드 풀 스레드 풀 병렬 작업 처리가 많아지면 스레드 개수가 증가되고 그에 따른 스레드 생성과 스케줄링으로 인해 CPU가 바빠져 메모리 사용량이 늘어납니다. 따라서 어플리케이션의 성능이 저하됩니다. 갑작스런 병렬작업의 극대화로 인한 스레드 증폭을 막으려면 스레드 풀(Thread Pool)을 사용해야 합니다. 스레드 풀은 작업 처리에 사용되는 스레드를 제한된 개수만큼 정해 놓고 작업 큐(Queue)에 들어오는 작업들을 하나씩 스레드가 맡아 처리합니다. 작업 처리가 끝난 스레드는 다시 작업 큐에서 새로운 작업을 가져와 처리합니다..
-
[Java] 멀티 스레드 - 데몬 스레드 & 스레드 그룹CSE/Java 2015. 12. 12. 20:25
멀티 스레드는 여러 절로 구성되어 있습니다. Intro작업스레드스레드 우선순위 & 동기화 메소드와 동기화 블록스레드 상태 & 상태 제어스레드 상태 제어 2데몬 스레드 & 스레드 그룹스레드 풀 데몬 스레드 데몬(daemon) 스레드는 주 스레드의 작업을 돕는 보조적인 역할을 하는 스레드입니다. 주 스레드가 종료되면 데몬 스레드는 강제적으로 종료되는데, 그 이유는 주 스레드의 보조 역할을 수행하므로 주 스레드가 종료되면 데몬 스레드의 존재 의미가 없어지기 때문입니다. 스레드를 데몬으로 만들기 위해서는 주 스레드가 데몬이 될 스레드의 setDaemon(true)을 호출해주면 됩니다. 아래 코드를 보면 메인 스레드가 주 스레드가 되고 AutoSaveThread가 데몬 스레드가 됩니다. 12345678public..
-
[Java] 멀티 스레드 - 상태 제어CSE/Java 2015. 12. 12. 18:55
멀티 스레드는 여러 절로 구성되어 있습니다. Intro작업스레드스레드 우선순위 & 동기화 메소드와 동기화 블록스레드 상태 & 상태 제어스레드 상태 제어 2데몬 스레드 & 스레드 그룹스레드 풀 상태 제어 스레드 간 협업(wait(), notify(), notifyAll()) 경우에 따라서는 두 개의 스레드를 교대로 번갈아가며 실행해야 할 경우가 있습니다. 정확한 교대작업이 필요할 경우, 자신의 작업이 끝나면 상대방 스레드를 일시 정지 상태에서 풀어주고, 자신은 일시 정지 상태로 만드는 것입니다. 이 방법의 핵심은 공유 객체에 있습니다. 공유 객체는 두 스레드가 작업할 내용을 각각 동기화 메소드로 구분해 놓습니다. 한 스레드가 작업을 완료하면 notify() 메소드로 풀어주고, 자신은 wait() 메소드를 ..
-
[Java] 멀티 스레드 - 상태 & 상태 제어CSE/Java 2015. 12. 12. 16:11
멀티 스레드는 여러 절로 구성되어 있습니다. Intro작업스레드스레드 우선순위 & 동기화 메소드와 동기화 블록스레드 상태 & 상태 제어스레드 상태 제어 2데몬 스레드 & 스레드 그룹스레드 풀 스레드 상태 스레드 객체를 생성하고, start() 메소드를 호출하면 곧바로 스레드가 실행되는 것처럼 보이지만 사실은 대기 상태가 됩니다. 실행 대기 상태란 아직 스케줄링 되지 않아서 실행을 기다리고 있는 상태를 말합니다. 실행 대기 상태에 있는 스레드 중에서 스케줄링으로 선택된 스레드가 CPU를 점유하고 run() 메소드를 실행하는데, 이를 실행(Running) 상태라고 합니다. 실행 상태의 스레드는 run() 메소드를 모두 실행하기 전에 스케줄링에 의해 다시 실행 대기 상태로 돌아갈 수 있습니다. 실행 상태에서 ..