setAttribute (link)를 호출 할 때 필요하다는 것을 알고 있지만 getAttirbute는 어떻습니까?Vaadin 7에서 VaadinSession getAttribute를 호출 할 때 잠금이 필요합니다.
이 정보가 맞습니까?
public Object getMyAttribute() {
return VaadinSession.getCurrent().getAttribute("myAttribute");
}
잠금이 필요합니까?
public Object getMyAttribute() {
try {
VaadinSession.getCurrent().getLockInstance().lock();
return VaadinSession.getCurrent().getAttribute("myAttribute");
} finally {
VaadinSession.getCurrent().getLockInstance().unlock();
}
}
흠, 네 말이 맞아, 나에게 명확하지 않았다. Vaadin은 주 스레드의 잠금을 처리하므로 ** setAttribute 또는 getAttribute (가시성 보증)를 호출하면 잠금 **이 발생합니다. – Krayo
나는 당신이 절대적으로 정확하다고 생각합니다, 바질. 당신의 대답에 더할 것이 없습니다. VaadinSession이나 UI 객체에 대한 동시 접근은'access()'메소드를 통해 수행하는 것이 바람직합니다. 주 스레드에서 이러한 개체에 액세스 할 때 잠금을 수행 할 필요가 없습니다. 위에서 언급 한 [블로그 게시물] (https://blog.oio.de/2013/02/22/vaadins-variable-scopes-vaadinsession-and-ui)을 작성할 때 Vaadin 7.1은 아직 공개되지 않았으며 명시 적으로 공개되지 않았습니다. 이 기사에서 설명한대로 세션 잠금을 수행해야했습니다. 그에 따라 블로그 게시물을 업데이트 할 예정입니다. –
@ RolandKrüger 내 의견을 확인해 주셔서 감사합니다. 그것은 그것이 옳다는 안도입니다. 스레딩은 까다로운 일입니다! Vaadin이 쉽게 볼 수있게 된 것을 기쁘게 생각합니다. –