为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕村9548890 2021-09-29 10:58:41
我刚开始学习 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 ......是否可以这样做,或者我将继续使用这种方法?
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

而对方的回答是完全有效的,我认为这可能是有价值的告诉你,ScheduledExecutorService(文件发现这里),让你调用一个函数foo()每次n使用该方法秒scheduleAtFixedRate()。


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


ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);

ses.scheduleAtFixedRate(foo, 0, n, TimeUnit.SECONDS); 

我认为在此处放置更多代码有点不必要,但要了解如何更详细地执行此操作,请查看此处、此处或此处。这些链接给出了一些基本的例子。我真的建议这样做,因为这个类是 java util 库的一部分(因此没有额外的依赖项)并且您实际上不必非常担心它的多线程/调度部分,它会处理所有这些为你。但这只是我的 $.02。


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


查看完整回答
反对 回复 2021-09-29
  • 2 回答
  • 0 关注
  • 137 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信