Java 如何从另一个线程更新GUI?
我的JSF应用程序中的线程有问题,也许有人可以帮助我 启动后,我运行newthread,它正在进行一些后台操作。此线程在Java 如何从另一个线程更新GUI?,java,multithreading,jsf,Java,Multithreading,Jsf,我的JSF应用程序中的线程有问题,也许有人可以帮助我 启动后,我运行newthread,它正在进行一些后台操作。此线程在while(true)-循环中工作,但当它无法执行任何操作时,它会调用wait()。它在循环中工作,因为我必须在一些用户操作之后调用notify() 现在我想完成的是:我希望线程通知主线程作业的一部分已经完成,这样我就可以更新UI中的一些元素。有什么想法吗 我也想显示FacesMessage,但从另一个线程(即使使用观察者模式)也不可能这样做。也许您可以使用ICEfaces服务
while(true)
-循环中工作,但当它无法执行任何操作时,它会调用wait()
。它在循环中工作,因为我必须在一些用户操作之后调用notify()
现在我想完成的是:我希望线程通知主线程作业的一部分已经完成,这样我就可以更新UI中的一些元素。有什么想法吗
我也想显示FacesMessage,但从另一个线程(即使使用观察者模式)也不可能这样做。也许您可以使用ICEfaces服务器端推送的异步后台工作来解决您的问题。
请看一个推送技术的例子
您的后台工作线程可以执行“推送”,这将“通知”某些页面进行更新(部分更新)并显示您的消息。也许您可以使用ICEfaces服务器端推送异步后台工作来解决您的问题。
请看一个推送技术的例子
您的后台工作线程可以执行“推送”,它将“通知”某些页面进行更新(部分更新)并显示您的消息。您可以使用JMS在运行的线程和托管bean之间进行通信,但对于其他线程,您需要使用上述推送技术之一
如果足够的话,您可以使用primefaces轮询组件,否则我现在知道的唯一一种与jsf一起工作的推送技术就是icefaces推送。Primefaces推出了一个新的基于websocket的推送组件,看起来它会非常好,但我不相信它会在几个月内完成(它出现在最新的快照中,但实际上还没有做很多,只适用于jetty8)。您也可以使用comet/atmosphere库来完成自己的工作,但我自己也看到了这一点,我可以告诉您,这些解决方案在您这方面需要做很多工作,基本上是一个自定义实现。您可以使用JMS在运行的线程和托管bean之间进行通信,但对于其余部分,您需要使用上面提到的推送技术之一
如果足够的话,您可以使用primefaces轮询组件,否则我现在知道的唯一一种与jsf一起工作的推送技术就是icefaces推送。Primefaces推出了一个新的基于websocket的推送组件,看起来它会非常好,但我不相信它会在几个月内完成(它出现在最新的快照中,但实际上还没有做很多,只适用于jetty8)。您也可以使用comet/atmosphere库做自己的事情,但我自己看了之后可以告诉您,这些解决方案需要您做大量的工作,基本上是一个定制的实现。还记得观察者模式吗?:-)使用事件源:这是一种非常好的OO机制。您使用的是JSF1.x还是2.x?您是否使用IceFaces/RichFaces/PrimeFaces这样的ajaxical组件库?我使用的是2版。还记得观察者模式吗?:-)使用事件源:这是一种非常好的OO机制。您使用的是JSF1.x还是2.x?您是否使用IceFaces/RichFaces/PrimeFaces这样的ajaxical组件库?我使用的是2版。还有你的脸。