繁体   English   中英

GWT中的线程(客户端)

[英]Threading in GWT (Client)

根据我的理解,GWT应用程序的整个客户端在构建时都会转换为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). 

或预定的“多线程”任务 ,这是什么意思?

JavaScript不支持多线程。 但是,GWT有一个“模拟”线程的类,这不是真正的多线程,但在大多数情况下可以满足您的需求: 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.
   }
});

您可以创建重复命令RepeatingCommand ,它可用于多次运行命令。 使用Scheduler.get().scheduleIncremental()启动它,它将执行该命令,直到execute方法返回false 您可以使用它将任务拆分为子任务,以获得更好的“线程”行为。 Scheduler支持一些其他方法以不同方式启动调度命令。 有关更多详细信息,请参阅JavaDoc

使用新的GWT类而不是已弃用的DeferredCommand 编辑和更新。

作为HTML5的一部分,Web Workers的工作在许多浏览器中实现,但并非在所有浏览器上实现(最着名的是Internet Explorer)。 你可以在可用的地方使用这些功能,但你应该做的是查看javascript编程模型。

Javascript通常异步工作。 请求被解雇,并且在某些时候他们的答案作为事件被接收。 您可以同时拥有大量待处理请求。 这需要对您的系统进行一些重新设计。

新方法是使用调度程序

JavaScript不支持多线程,因此无论GWT做什么,多线程都必须在服务器端完成,因为GWT只能使用客户端已有的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM