使用线程与Vaadin?

Fer*_*iva 6 java multithreading jakarta-mail progress-bar vaadin7

我正在尝试Thread在我的项目中发送电子邮件.当我点击a时Button,a Thread启动并ProgressBar显示a.所有邮件一发送,ProgressBar就不会消失.

这是我的代码:

Button btnSendMail = new Button("Mail");
btnSendMail.addClickListener(this);
@Override
public void buttonClick(ClickEvent event) {     
    if(event.getButton() == btnSendMail){   
            sendMail();
    }
}
}    

private void sendMail(){
     List<String> list = new ArrayList<String>();
     list.add("mymail@domain.com");
     list.add("metoyou@domain.com");
     list.add("thisismymail@domain.com");

     new Thread(){
         public void run(){
             while(!isInterrupt()){
                 progressbar.setVisible(true);
                 for(String send : list){
                     new SendMailClass(send); //javamail class
                 }           
                 progressbar.setVisible(false);
                 interrupt();
    }   
}.start();


}
Run Code Online (Sandbox Code Playgroud)

如何控制ProgressBar分离的可见性Thread

And*_*ild 7

要从后台线程更新UI元素,您必须激活推送或轮询.

该文档可以在vaadin书中找到.

https://vaadin.com/de/book/vaadin7/-/page/advanced.push.html

除了启用push之外,还需要同步对UI元素的访问,如"11.16.3.从另一个线程访问UI"一节中所述