2017-02-28 2 views
1

오라클에 따르면 lamdbas를 직렬화하는 것은 좋지 않습니다. 직렬화 된 lambdas를 Hazelcast와 함께 사용하는 것이 가능하며 어떻게 처리할지 궁금합니다. 람다 클래스의 중복 문제가 있습니까? 예 : 람다에 대한 생성 된 클래스가 복제 될 때 잘못된 코드가 실행될 수 있습니다. 분산 Executor 및 분산 맵 구현을 사용하는 데 가장 관심이 있습니다.직렬 통신 방식의 람다 (hazelcast)는 어떻게 처리됩니까?

답변

2

직렬화 된 람다는 Java Lambda 직렬화 사양에 따라 직렬화됩니다. 공식적으로 지원되는 유일한 방법은 "이중 캐스트"를 사용하는 표준 방식입니다.

(Runnable & Serializable) (v) -> System.out.println(v); 

그런 식으로 Java 직렬화와 같이 직렬화됩니다. 그러나 람다에 외부 콘텐츠를 캡처하지 않는 것이 좋습니다.

+0

외부 콘텐츠 란 무엇입니까? lamda는 상태가없는 함수 일뿐입니다. 어떻게 그 안에 아무것도 저장할 수 있습니까? 상태가있는 익명의 내부 수업을 의미합니까? – newlogic

+0

아니, 두 번째로 컨텍스트를 감싸고있다. 람다는 상태가있다. – noctarius