Java 8 Lambda를 이용한 Execute around pattern #2 - lock 관리 실행 어라운드 패턴(Execute around pattern)에 대한 두번째 예시 입니다. 먼저 1번글에서는 resource의 명시적인 해제시 해체할 수 있는 틀(try-catch-with-resource)를 만들어 넣고 내부에 인자로 실제 동작해야 할 구문을 넣는 형태를 얘기했었습니다.이때 인자는 당연히 functional interface 입니다. 같은 방법으로 이번에는 lock을 사용하는 방법을 알아봅니다.잠금(lock)의 관리lock은 왜 써야 할까요?저는 사실 synchronized만 쓴 터라 lock의 개념이 무척 궁금했더랍니다.Java5부터 추가된 개념으로 동기화를 좀더 디테일?? 하게 관리하기 위해서 사용합니다. 예를 들면 하나의 함수 블럭을 넘어간다던가, 무작정 lock을 대기하는게 아니.. 개발이야기/Java 7년 전
Java 8 Lambda를 이용한 Execute around pattern #1 - resource 관리 lambda를 접하고 나면 이를 활용하는 방법으로 execute around pattern이란 용어가 나옵니다. 이번에는 가장 기본이 되는 Execute around pattern에 대해서 얘기합니다. Execute Around Pattern 이란??어떤한 작업을 할 때 준비 -> 실행 -> 정리의 역할이 구분되어 있는 코드들이 있습니다. 준비와 정리는 틀처럼 정해져 있고 실행부분만 바뀌는 코드의 형태들을 실행 어라운드 패턴이라고 합니다 어떤 동작을 할지 코드내에서 구현하는것이 아니라, 공통적으로 사용되는 코드를 template처럼 만들어 두고, 변경되는 부분은 호출(caller)하는 곳에서 구현해서 넘겨줍니다. 아래 예제에서는 파일 IO로 설명합니다. 파일IO를 쓰려면 스트림이나 파일을 열고 원하는 내.. 개발이야기/Java 7년 전
Java 8 Lambda Expression - 람다식 #2 지난 포스팅에 이어 계속 진행합니다.지난번에는 Strategy pattern을 람다식을 사용하면서 코드를 간결하게 변경시키는 방법을 봤습니다. 이번에는 가장 간단하게 람다식을 쓰는 방법에 대해 언급합니다. 익명클래스 (anonymous class)의 치환 - ComparatorLambda를 사용하는 가장 간단한 방법으로 익명클래스를 람다로 치환할 수 있습니다. new class...로 시작하는 불필요한 부분은 제거하고, 필요한 부분만 람다로 표현합니다. 이전 포스팅에서 상품List의 을 가격으로 정렬하려면 Collection.sort(List, Comparator)를 사용해야 합니다. 이전 포스팅에서 사용한 person 객체및 해당 list 생성 코드 입니다. public class Product { p.. 개발이야기/Java 8년 전
Java 8 Lambda Expression - 람다식 #1 Java 8에 있어서 가장 두드러진 부분은 람다의 적용입니다. 따라서 완벽하지는 않지만 그래도 쓸만한 함수형 프로그래밍을 할수가 있게 되었습니다. 이번 포스팅에서는 람다에 대한 기본적인 설명 보다는 왜 람다가 필요한지와 어떤식으로 사용될 수 있는지에 대한 단편적인 예제를 먼저 봅니다. 람다에 대한 기본적인 설명은 #3에서 설명할 예정이며, 어렵지 않으니, 쭈욱 따라 오시면 됩니다. 동작 파라미터화 (Behavior parameterization) 람다를 이용하면 어떤 동작을 Parameter로 만들수가 있습니다. "함수의 인자로 어떤 동작을 하는 함수를 받을 수 있다" 라고 이해하는게더 편할 수 도 있습니다. 이 동작은 함수를 호출하기 전까지는 아직 정해지지 않은 상태이며, 함수를 호출할 때 전달해 준 .. 개발이야기/Java 8년 전