猿问

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

我刚开始学习 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 ......是否可以这样做,或者我将继续使用这种方法?


慕村9548890
浏览 138回答 2
2回答

慕尼黑5688855

而对方的回答是完全有效的,我认为这可能是有价值的告诉你,ScheduledExecutorService(文件发现这里),让你调用一个函数foo()每次n使用该方法秒scheduleAtFixedRate()。基本上,实际设置执行器非常简单:ScheduledExecutorService ses = Executors.newScheduledThreadPool(1);ses.scheduleAtFixedRate(foo, 0, n, TimeUnit.SECONDS); 我认为在此处放置更多代码有点不必要,但要了解如何更详细地执行此操作,请查看此处、此处或此处。这些链接给出了一些基本的例子。我真的建议这样做,因为这个类是 java util 库的一部分(因此没有额外的依赖项)并且您实际上不必非常担心它的多线程/调度部分,它会处理所有这些为你。但这只是我的 $.02。如果您有问题/评论,请留下问题/评论,我会尽力回答。
随时随地看视频慕课网APP

相关分类

Java
我要回答