【问题标题】:Is there any way to wait a status using Callable in java?有没有办法在java中使用Callable等待状态?
【发布时间】:2014-12-21 17:41:59
【问题描述】:

我有一个问题:我创建了一个实现 Callable 的任务。该任务有一个等待状态返回为假的任务。状态取决于服务器返回。我不知道服务器何时返回 false。所以我创建了一个名为 WaitForStatus 的任务,如下所示。如果状态为真,此任务将调用 Thread.sleep();只要状态为假,此任务就会完成。我能怎么做?

下面是我的代码:

class WaitForStatusTask implements Callable<String> {

    private long waitTime;
    private boolean status;

    public WaitForStatusTask(boolean _status, int timeInMillis){
        this.waitTime=timeInMillis;
        this.status = _status;
    }

    @Override
    public String call() throws Exception {
        while(status){
            System.err.println("wait..");
            Thread.sleep(waitTime);

        }

    return "task done";         

   }

}

你能帮我更正这段代码吗?

【问题讨论】:

  • 将状态更改为false的代码在哪里,为什么在c'tor中将状态作为参数?可以从while循环中查询到服务器的状态吗?
  • 是的,我可以查询服务器的状态如下。 while (status) { //我的代码 }
  • 状态是从服务器返回。该任务只等待它返回false。每当它返回 false 时,任务就完成了。这就是我的想法

标签: java threadpool callable futuretask


【解决方案1】:

下面的代码效率低下。等待/通知(或并发实用程序)将帮助您编写干净的代码。

while(status){
            System.err.println("wait..");
            Thread.sleep(waitTime);

        }
}

在 Future 上调用 get() 等待任务完成的响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 2020-04-13
    • 2019-08-19
    • 1970-01-01
    • 2020-09-20
    相关资源
    最近更新 更多