Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中为特定方法添加计时器?_Java_Gwt - Fatal编程技术网

如何在java中为特定方法添加计时器?

如何在java中为特定方法添加计时器?,java,gwt,Java,Gwt,我想执行一个包含服务调用的特定方法。因为它包含一个服务调用,所以需要一些时间来执行。我想添加一个计时器,它将保持程序等待,直到该方法完成其执行。对此有何解决办法?您可以使用单独的线程调用该服务,并使用thread类的join()方法,强制主程序等待该线程完成执行。您可以使用java.util.concurrent包组织一个具有超时的异步方法执行 ExecutorService executorService = ... Object res = executorService.s

我想执行一个包含服务调用的特定方法。因为它包含一个服务调用,所以需要一些时间来执行。我想添加一个计时器,它将保持程序等待,直到该方法完成其执行。对此有何解决办法?

您可以使用单独的线程调用该服务,并使用thread类的
join()
方法,强制主程序等待该线程完成执行。

您可以使用
java.util.concurrent
包组织一个具有超时的异步方法执行

    ExecutorService executorService = ...
    Object res = executorService.submit(new Callable<Object>() {
        public Object call() throws Exception {
            ... your logic
        }
    }).get(timeout, TimeUnit.MILLISECONDS);
执行器服务执行器服务=。。。 Object res=executorService.submit(new Callable()){ 公共对象调用()引发异常{ …你的逻辑 } }).get(超时,时间单位为毫秒);
调度程序

Scheduler.get().ScheduledDeferred(新的Scheduler.ScheduledCommand()){

@凌驾

public void execute(){

//代码在这里


}

可以指定
.submit()
实际返回一个
未来
,并且有一个
.get()
没有超时,我正在尝试此解决方案,甚至这些类(ExecutorService、futute等)不允许在GWT的客户端使用。客户端对类的使用有限制。这会产生错误-没有可用于java.net.URL类型的源代码;您是否忘记继承所需的模块?从1.5开始,ExecutorService和其他都是标准JRE的一部分,“让程序等待”是什么意思?如果计时器过期会发生什么?进一步的程序执行取决于服务调用的结果。因此,我想在进一步执行之前等待该结果。那么,为什么要设置计时器?如果调用时间太长怎么办?同意。那么有什么其他解决方法吗?接受的答案将在超时的情况下对您有效。如果您不想超时,只需调用
.get()
。有关更多信息,请查看
Future
FutureTask
的javadoc。我想在gwt中使用客户端类有一些限制,线程类就是其中之一(如果我没有错的话)。它给出错误-没有可用于java.net.URL类型的源代码;是否忘记继承所需的模块?。