M.D*_*Dan 1 java multithreading vaadin
我目前正在Vaadin的Java Web应用程序上工作.
我想从另一个类访问位于我的LoginUI中的getter方法.
UI.getCurrent()成功返回当前的Thread(LoginUI).
我需要调用哪些方法才能实现此目的?
先感谢您.
UI.getCurrent()不是线程安全的.相反,我建议您使用以下模式.
public class MyView extends VerticalLayout implements View {
private UI ui;
@Override
public onAttach() {
ui = getUI();
...
}
...
public updateMe(..) {
...
try {
ui.access( ... do updates ... );
} catch (UIDetachedException e) {
// Do nothing, this exception is thrown if Browser is closed
}
}
}
Run Code Online (Sandbox Code Playgroud)
解释.附加视图时存储UI引用.并编写一个方法来更新视图,你需要在那里做ui.access().调用此方法来执行更新,而不是在线程中执行UI.getCurrent().
这是经常被问到的话题,还有更多具体的案例问题,关于同样的事情也在这里vaadin 10 - 推 - 标签不会更新