gpt4 book ai didi

java - 在 while 循环中更新 N 秒的字符串

转载 作者:行者123 更新时间:2023-11-30 07:44:41 25 4
gpt4 key购买 nike

我刚开始学习 Java,但一直被这个问题困扰:我有一个无限的 while 循环,它创建一个消息以通过套接字发送;目前,只有从队列中轮询并读取多个元素后,才会发送消息。

String msg = null;
String toSend = "";
String currentNumOfMsg = 0;
String MAX_MSG_TO_SEND = 200;
while(true) {
if ((msg = messageQueue.poll()) != null) { // if there is an element in the list
toSend += (msg + "#");
currentNumOfMsg++;

if (currentNumOfMsg == MAX_MSG_TO_SEND) {
try {
sendMessage(toSend); // send to socket
} finally {
msg = null;
toSend = "";
currentNumOfMsg = 0;
}
}
}
}

我的目标是在 N 秒后发送消息,而不是等待到达 MAX_MSG_TO_SEND...是否可以这样做,或者我将继续采用这种方法?

最佳答案

虽然另一个答案完全有效,但我认为告诉您 ScheduledExecutorService(找到文档 here )可能很有值(value),您可以调用函数 foo()n 秒使用方法 scheduleAtFixedRate()

基本上,实际设置执行器非常简单:

ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);
ses.scheduleAtFixedRate(foo, 0, n, TimeUnit.SECONDS);

我认为在这里添加更多代码有点不必要,但要了解如何更详细地执行此操作,请查看 here , here , 或 here .这些链接提供了一些基本示例。我真的建议这样做,因为这个类是 java util 库的一部分(所以没有额外的依赖),你实际上不必太担心它的多线程/调度部分,它会处理所有这些为你。但这只是我的 0.02 美元。

如果您有任何问题/评论,请留下问题/评论,我会尽力回答。

关于java - 在 while 循环中更新 N 秒的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52406830/

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