Java 8 Lambda Function 용어 정리
* Lambda Function
= anonymous function* Free Variable (<-> Local Variable)
해당 함수 외부의 참조 변수를 free variable이라 부른다.free variable 종류
- static 변수
- member 변수
- local 변수(람다가 속해 있는 함수의 local 변수를 말함)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public void lambdaTest() { int base = 1000; new Thread( = () -> { try { Thread.sleep(1000); base = 999; } catch(Exception e) { /* do nothing */ } }).start(); System.out.println(base); } |
각 변수들의 jvm 상의 위치를 예상해 보면, 1번은 method area에 2번은 java heap에 3번은 해당 함수가 실행되는 stack에 위치하게 될 것이다. 그러면 위와 같은 코드에서 lambdaTest() 함수가 끝나버리면 stack이 pop 됨으로 lambda 내부에서 잘못된 local 변수를 참조할 수 있다. 그러므로 3번의 local 변수 참조는 읽기만 가능하다.
댓글
댓글 쓰기