GWT中的线程(客户端)

Fed*_*rer 48 gwt multithreading

据我所知,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). 
Run Code Online (Sandbox Code Playgroud)

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

Hil*_*amp 36

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.
   }
});
Run Code Online (Sandbox Code Playgroud)

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

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

  • 你是什​​么意思*"服务器不允许创建线程"*?哪个服务器?我不是说这是一个好习惯,但如果Tomcat没有明确阻止线程创建的安全策略,你可以在服务器端创建线程,就像在任何Java程序中一样! (2认同)