Java
-
[Java] 멀티 스레드 - 우선순위, 동기화 메소드CSE/Java 2015. 12. 12. 14:26
멀티 스레드는 여러 절로 구성되어 있습니다. Intro작업스레드스레드 우선순위 & 동기화 메소드와 동기화 블록스레드 상태 & 상태 제어스레드 상태 제어 2데몬 스레드 & 스레드 그룹스레드 풀 스레드 우선순위 멀티 스레드는 동시성(Concurrency) 또는 병렬성(Parallelism)으로 실행되기 때문에 이 용어들에 대해 정확히 이해하는 것이 좋습니다. 동시성은 멀티 작업을 위해 하나의 코어에서 멀티 스레드가 번갈아가며 실행하는 성질을 말합니다. 병렬성은 멀티 작업을 위해 멀티 코어에서 개별 스레드를 동시에 실행하는 성질을 말합니다. 스레드의 개수가 코어의 수보다 많을 경우, 스레드를 어떤 순서에 의해 동시성으로 실행할 것인가를 결정해야 하는데, 이것을 스레드 스케줄링이라고 합니다. 스케줄링에 의해 스..
-
[Java] 멀티 스레드CSE/Java 2015. 12. 12. 12:07
멀티 스레드는 여러 절로 구성되어 있습니다. Intro작업스레드스레드 우선순위 & 동기화 메소드와 동기화 블록스레드 상태 & 상태 제어스레드 상태 제어 2데몬 스레드 & 스레드 그룹스레드 풀 멀티 스레드 개념 운영체제에서 실행 중인 하나의 어플리케이션을 프로세스(process)라고 부릅니다. 실행에 필요한 메모리를 할당받아 어플리케이션의 코드를 실행하게 됩니다. 다음은 멀티 프로세스와 그에 따른 싱글/멀티 스레드를 그림으로 보겠습니다. 멀티 프로세스는 운영체제에서 할당받은 자신의 메모리를 가지고 실행하기 때문에 서로 독립적입니다. 따라서 하나의 프로세스에서 오류가 발생해도 다른 프로세스에게 영향을 끼치지 않습니다. 하지만 멀티 스레드는 하나의 프로세스 내부에서 생성되기 때문에 하나의 스레드가 예외를 발생..
-
[Java] 람다식 - 메소드 참조CSE/Java 2015. 9. 23. 14:50
람다식은 여러 절로 구성되어 있습니다. Intro.람다식 기본 문법 & 타겟 타입과 함수적 인터페이스클래스 멤버와 로컬 변수 사용표준 API의 함수적 인터페이스1표준 API의 함수적 인터페이스2메소드참조 메소드 참조 메소드 참조(Method Reference)는 말 그대로 메소드를 참조해서 매개 변수의 정보 및 리턴 타입을 알아내어, 람다식에서 불필요한 매개 변수를 제거하는 것이 목적입니다. 람다식은 종종 기존 메소드를 단순히 호출하는 경우가 많습니다. 예를 들어 두 개의 값을 받아 큰 수를 리턴하는 Math 클래스의 max() 정적 메소드를 호출하는 람다식은 다음과 같습니다. 12(left, right) -> Math.max(left, right); Colored by Color Scriptercs 람..
-
[Java] 람다식 - 표준 API의 함수적 인터페이스2CSE/Java 2015. 9. 23. 14:03
람다식은 여러 절로 구성되어 있습니다. Intro.람다식 기본 문법 & 타겟 타입과 함수적 인터페이스클래스 멤버와 로컬 변수 사용표준 API의 함수적 인터페이스1표준 API의 함수적 인터페이스2메소드참조 andThen()과 compose() 디폴트 메소드 디폴트 및 정적 메소드는 추상 메소드가 아니기 때문에 함수적 인터페이스에 선언되어도 여전히 함수적 인터페이스의 성질을 잃지 않습니다. 여기서 함수적 인터페이스 성질이란 하나의 추상 메소드를 가지고 있고 람다식으로 익명 구현 객체를 생성할 수 있는 것을 말합니다. java.util.function 패키지의 함수적 인터페이스는 하나 이상의 디폴트 및 정적 메소드를 가지고 있습니다. Comsumer, Function, Operator 종류의 함수적 인터페이스..
-
[Java] 람다식 - 표준 API의 함수적 인터페이스1CSE/Java 2015. 9. 20. 16:13
람다식은 여러 절로 구성되어 있습니다. Intro.람다식 기본 문법 & 타겟 타입과 함수적 인터페이스클래스 멤버와 로컬 변수 사용표준 API의 함수적 인터페이스1표준 API의 함수적 인터페이스2메소드참조 표준 API의 함수적 인터페이스 자바에서 제공되는 표준 API에서 한 개의 추상 메소드를 가지는 인터페이스들은 모두 람다식을 이용해서 익명 구현 객체로 표현이 가능합니다. 예를 들어 스레드의 작업을 정의하는 Runnable 인터페이스는 매개 변수와 리턴값이 없는 run() 메소드만 존재하기 때문에 다음과 같이 람다식을 이용해서 Runnable 인스턴스를 생성시킬 수 있습니다. * RunnableExam.java 123456789101112131415161718 package lambda; public c..
-
[Java] 람다식 - 클래스 멤버와 로컬 변수 사용CSE/Java 2015. 9. 20. 14:43
람다식은 여러 절로 구성되어 있습니다. Intro.람다식 기본 문법 & 타겟 타입과 함수적 인터페이스클래스 멤버와 로컬 변수 사용표준 API의 함수적 인터페이스1표준 API의 함수적 인터페이스2메소드참조 클래스 멤버와 로컬 변수 사용 람다식의 실행 블록에는 클래스의 멤버(필드와 메소드) 및 로컬 변수를 사용할 수 있습니다. 클래스의 멤버는 제약 사항 없이 사용 가능하지만, 로컬 변수는 제약 사항이 따릅니다. 클래스의 멤버 사용 람다식 실행 블록에는 클래스의 멤버인 필드와 메소드를 제약 사항 없이 사용할 수 있습니다. 하지만 this 키워드를 사용할 때에는 주의가 필요합니다. 일반적으로 익명 객체 내부에서 this는 익명 객체의 참조이지만, 람다식에서 this는 내부적으로 생성되는 익명 객체의 참조가 아니..
-
[Java] 람다식 - 기본 문법, 타겟 타입과 함수적 인터페이스CSE/Java 2015. 9. 20. 14:10
람다식은 여러 절로 구성되어 있습니다. Intro.람다식 기본 문법 & 타겟 타입과 함수적 인터페이스클래스 멤버와 로컬 변수 사용표준 API의 함수적 인터페이스1표준 API의 함수적 인터페이스2메소드참조 람다식 기본 문법 함수적 스타일의 람다식을 작성하는 방법은 다음과 같습니다. (타입 매개변수, ...) -> { 실행문; ... } (타입 매개변수, ...)는 오른쪽 중괄호 { } 블록을 실행하기 위해 필요한 값을 제공하는 역할을 합니다. 매개 변수의 이름은 개발자가 자유롭게 지정할 수 있습니다. -> 기호는 매개 변수를 이용해서 중괄호 { }를 실행한다는 뜻으로 해석하면 됩니다. 예를 들어 int 매개 변수 a 의 값을 콘솔에 출력하기 위해 다음과 같이 람다식을 작성할 수 있습니다. 12(int a)..
-
[Java] 람다식 - IntroCSE/Java 2015. 9. 20. 13:23
람다식은 여러 절로 구성되어 있습니다. Intro.람다식 기본 문법 & 타겟 타입과 함수적 인터페이스클래스 멤버와 로컬 변수 사용표준 API의 함수적 인터페이스1표준 API의 함수적 인터페이스2메소드참조 람다식 자바는 함수적 프로그래밍을 위해 자바 8부터 람다식(Lambda Expressions)을 지원하면서 기존의 코드 패턴과 많이 달라졌습니다. 람다식은 익명 함수(anonymous function)를 생성하기 위한 식으로 객체 지향 언어보다는 함수 지향 언어에 가깝습니다. 객체 지향 프로그래밍에 익숙한 개발자들은 다소 혼란스러울 수 있지만, 자바에서 람다식을 수용한 이유는 자바 코드가 매우 간결해지고, 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있기 때문입니다. 람다식의 형태..