亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 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 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號