线程在GWT(客户端)
据我所知,GWT应用程序的整个客户端在构build时转换为Javascript,因此我想这个问题与Javascript和GWT提供的可能性有关。
我有几十个过程需要在我的GWT应用程序中启动,然后每个过程将不断地调用服务器。 GWT是否支持线程? GWT客户端是否支持线程?
编辑:
此链接指出:
No JavaScript knowledge required If you're just a user of the framework, which I am for the matter of discussion, you do not need to know JavaScript in order to write dynamic content, be it client-side such as rolling frames, docking panels or scheduled “multi-threading” tasks, or server-side calls using XMLHttpRequests (aka AJAX).
或预定的“multithreading”任务 ,这是什么意思?
JavaScript不支持multithreading。 然而,GWT有一个类来“模拟”线程,这不是真正的multithreading,但在大多数情况下,你需要: com.google.gwt.core.client.Scheduler.ScheduledCommand
。 该技术是基于计时器类的,该计时器类在给定的时间过去之后执行一个方法。
例如,将以下代码放入自己的代码中时, scheduleDeferred
方法将直接返回,并且您的代码在命令之后继续执行,而使用计时器execute()
方法:
Scheduler.get().scheduleDeferred(new ScheduledCommand() { public void execute() { .. code here is executed using the timer technique. } });
您可以创build一个重复命令RepeatingCommand
,它可以用来多次运行该命令。 使用Scheduler.get().scheduleIncremental()
来启动它,它将执行该命令,直到execute方法返回false
。 您可以使用它来将任务分解为子任务以获得更好的“线程化”行为。 Scheduler
支持一些额外的方法以不同的方式启动预定的命令。 有关更多详细信息,请参阅JavaDoc 。
使用新的GWT类进行编辑和更新,而不是使用已弃用的DeferredCommand
。
Web Workers的工作是作为HTML5的一部分,在许多浏览器中实现,但不是全部(最值得注意的是Internet Explorer)。 你可以在可用的地方使用这些function,但是你应该做的是看看javascript编程模型。
JavaScript通常是asynchronous工作的。 请求被解雇,在某个时候他们的答案被作为一个事件收到。 您可以同时拥有大量待处理的请求。 这需要对系统进行一些重新devise。
新的方法是使用调度程序
JavaScript不支持multithreading,所以无论GWT做什么,multithreading只能在服务器端完成,因为GWT只能使用客户端已有的function。