有没有办法在java中使用Callable等待状态?

时间:2014-10-26 11:22:22

标签: java threadpool callable futuretask

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

以下是我的代码:

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";         

   }

}

你能为我纠正这段代码吗?

1 个答案:

答案 0 :(得分:-1)

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

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

        }
}

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