본문 바로가기

언어공부

(188)
자바 쓰레드의 I/O 블락킹(blocking) 자바 쓰레드의 I/O 블락킹(blocking)에 대해서 알아보자. 자바 쓰레드의 I/O 블락킹(blocking) 두 쓰레드가 서로 다른 자원을 사용하는 작업의 경우에는 싱글쓰레드 프로세스보다 멀티쓰레드 프로세스가 더 효율적이다. 예를 들면 사용자로부터 데이터를 입력받는 작업, 네트워크로 파일을 주고받는 작업, 프린터로 파일을 출력하는 작업과 같이 외부기기와 입출력을 필요로 하는 경우가 이에 해당한다. 만일 사용자로부터 입력받는 작업(A)과 화면에 출력하는 작업(B)을 하나의 쓰레드로 처리한다고 하면 사용자가 입력을 마칠 때까지 아무 일도 하지 못하고 기다리기만 해야한다. 그러나 두개의 쓰레드로 처리한다면 사용자의 입력을 기다리는 동안 다른 쓰레드가 작업을 처리할 수 있기 때문에 보다 효율적인 CPU의 사..
자바 멀티쓰레드 자바 멀티쓰레드에 대해서 알아보자. 멀티쓰레드 프로세스(process)는 실행중인 프로그램이다. 프로그램을 실행하면 OS로 부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다. 그래서 모든 프로세스에는 최소한 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 멀티쓰레드 프로세스(Multi-threaded process)라고 한다. ex) 싱글쓰레드 = 자원+쓰레드 / 멀티쓰레드 = 자원+쓰레드+쓰레드+.... 멀티쓰레드의 장점은 아래와 같다. CPU의 사용률을 향상시킨다. 자원을 보다 효율적으로 사용할 수 ..
자바 람다식(Lambda Expression, 익명함수), 함수형 인터페이스(Functional Interface), 메소드 참조 자바 람다식(Lambda Expression)에 대해서 알아보자. 람다식(Lambda Expression) 람다식은 간단히 말해서 메소드를 하나의 식으로 표현한 것이다. 람다식은 함수를 간략하면서도 명확하게 표현할 수 있게 해준다. 메소드를 람다식으로 표현하면 메소드의 이름과 반환값이 없어지므로, 람다식을 익명함수라고도 한다. 람다식은 오직 람다식 자체만으로 메소드의 역할을 대신할 수 있다. 람다식은 메소드의 매개변수로 전달되어지는 것이 가능하고, 메소드의 결과로 반환될 수도 있다. 람다식으로 인한 메소드를 변수처럼 다루는 것이 가능해진 것이다. 람다식에 선언된 매개변수의 타입은 추론이 가능한 경우는 생략할 수 있는데, 대부분의 경우에 생략이 가능하다. 람다식에 반환타입이 없는 이유도 항상 추론이 가능하..
자바 내부 클래스의 종류와 익명클래스(anonymous class) 클래스의 종류와 익명클래스(anonymous class)에 대해서 알아보자. 클래스의 종류 클래스의 종류는 아래의 표와 같다. 내부 클래스 특징 인스턴스 클래스 (instance class) 외부 클래스의 멤버변수 선언위치에 선언하며, 외부 클래스의 인스턴스 멤버처럼 다루어진다. 주로 외부 클래스의 인스턴스 멤버들과 관련된 작업에 사용될 목적으로 선언된다. 정적 클래스 (static class) 외부 클래스의 멤버변수 선언위치에 선언하며, 외부 클래스의 static멤버처럼 다루어진다. 주로 외부 클래스의 static멤버, 특히 static메소드에서 사용될 목적으로 사용된다. 지역 클래스 (local class) 외부 클래스의 메소드나 초기화블럭 안에 선언하며, 선언된 영역 내부에서만 사용될 수 있다. 익..
자바 내부클래스 (inner class), 내부인터페이스 자바 내부클래스에 대해서 알아보자 내부클래스(inner class) 내부 클래스는 클래스 내에 선언된 클래스이다. 클래스에 다른 클래스를 선언하는 이유는 두 클래스가 긴밀한 관계에 있기 때문이다. 한 클래스를 다른 클래스의 내부 클래스로 선언하면 두 클래스의 멤버들 간에 서로 쉽게 접근할 수 있다는 장점과 외부에는 불필요한 클래스를 감춤으로서 코드의 복잡성을 줄일 수 다는 장점(캡슐화)이 있다. 여기서 A는 외부클래스, B와 C는 내부 클래스(외부클래스$내부클래스명.class 파일로 컴파일), D는 지역클래스(외부클래스명$번호 지역클래스명.class파일로 컴파일)이다. 이때 내부 클래스는 A를 제외하고 다른 클래스에서 잘 사용되지 않아야 한다. 내부클래스는 클래스 내에 선언된다는 점을 제외하고는 일반적인..
자바 열거형(enum) 자바 열거형(enum)에 대해서 알아보자 열거형(enum) 열거형은 여러 상수를 선언해야 할 때, 편리하게 선언할 수 있는 방법이다. 상수가 많을 때는 코드가 불필요하게 길어지기 때문에 열거형을 이용하면 간단히 상수를 선언할 수 있다. 열거형을 정의하는 방법은 enum 열거형이름 {상수명1, 상수명2, ...} 이다. ex) 월~일을 상수로 정의하는 Week은 아래와 같다. 열거형에 정의된 상수를 사용하는 방법은 "열거형이름.상수명"이다. 클래스의 static변수를 참조하는 것과 동일하다. 위의 문장에서 아래와 같이 코드를 추가했다. 열거형 상수간의 비교에는 '=='를 사용할 수 있다. 그러나 >,
자바 JAVA FX CSS 스타일 적용 자바 JAVA FX CSS 스타일 적용에 대해서 알아보자. JAVA FX CSS 스타일 적용 JAVA FX UI를 담당하는 컨테이너 및 컨트롤은 CSS(Cascading Style Sheets)를 적용해서 모양 및 색상을 변경할 수 있다. 이것은 HTML에 CSS를 적용하는 것과 유사하다. CSS를 적용하는 방법은 인라인 스타일(XML에 직접)과 외부 CSS파일 적용법이 있다. 인라인 스타일법 이 방법은 컨테이너 또는 컨트롤에 스타일 속성값을 직접 정의하기 때문에 쉽고 빠르게 모양과 색상을 변경할 수 있다. 하지만 동일한 스타일을 적용하는 컨테이너와 컨트롤이 많아질수록 중복 코드가 늘어나는 단점이 있다 또한 레이아웃과 CSS가 뒤섞여 추후 유지보수가 어렵다. ex) 외부 CSS 파일 적용법 인라인 스타일..
자바 JAVA FX 개요 및 JAVA FX 이클립스 연동하는 법 및 JAVA FX 레이아웃 자바 JAVA FX에 대해서 알아보자. JAVA FX JAVA FX는 사용자 애플리케이션을 개발하기 위한 그래픽과 미디어의 패키지를 말한다. JAVA FX는 자바 7버전부터 JDK에 포함되어 있기 때문에 별도의 SDK설치 필요 없이도 바로 사용할 수 있다. JAVA FX는 스윙보다 더 가벼워지고 더 강력해졌고, 데스크탑 UI 애플리케이션을 개발할 수 있도록 가볍고 풍부한 UI를 제공하고 있다. 2007년에 JAVA FX1.0이 나왔는데 JAVA FX 스크립트 언어로 개발된 프로그램을 자바가상머신에서 실행되는 구조로 되어있다. 애니메이션과 시각적인 효과를 내는데 최적화 되었지만, 프로그래머들이 새로운 언어를 또 익혀야 하기 때문에 멀리해 2011년에 자바 언어외에 별도의 언어가 필요없는 JAVA FX2.0..