线程在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。