gpt4 book ai didi

java - 如何在特定时间内运行任务

转载 作者:行者123 更新时间:2023-11-30 06:02:51 24 4
gpt4 key购买 nike

我正在实现某种聊天应用程序,我需要一些帮助。这是简化的代码:

//...
Boolean stop = false;

while(!stop) {

ServerRequest message = (ServerRequest) ois.readObject();
broadcastMessage((String)message.getData()); //this method sends the client's message to all the other clients on the server

stop = (System.nanoTime() - start >= handUpTime); // I want to let the client send his messages for no more than handUpTime seconds
} //...

我想让客户端将消息发送到服务器一段时间(handUpTime),然后“阻止”他,但我不知道如何以“优雅”的方式做到这一点。当然,我的代码偶然发现了 ois.readObject() 部分,因为系统等待接收消息,并继续运行超过 handUpTime 秒。我怎么解决这个问题?我也对其他方法持开放态度。

最佳答案

你可以尝试:

ExecutorService executorService = Executors.newSingleThreadExecutor();

Callable<Object> callable = () -> {
// Perform some blocking computation
return someObject
};

Future<Object> future = executorService.submit(callable);

Object result = future.get(YOUR_TIMEOUT, TimeUnit.SECONDS);

如果 future.get() 在一定时间内没有返回,它会抛出 TimeoutException,因此您应该处理该异常。请参阅this post .

关于java - 如何在特定时间内运行任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51917015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com