黑洞之心 2021-03-13 11:28 采纳率: 0%
浏览 118

精准控制1秒内发送500条数据

while(true){
    val start = System.currentTimeMillis()
    var nowtime = start
    var i = 1
    while (nowtime <= start + 1000L && i<=500) {
      
        println(i)

        i=i+1
     nowtime=System.currentTimeMillis()
    }

    }

我的这个有问题,这个是个死循环,一直在发,而且我还有别的的代码,程序运行十几分钟就会报OOM

  • 写回答

6条回答 默认 最新

  • allway2 2021-03-13 13:23
    关注
    package Solution474;
    
    public class test {
    	public static void main(String[] args) {
    		while (true) {
    
    			var start = System.currentTimeMillis();
    
    			var nowtime = start;
    
    			var i = 1;
    
    			while (nowtime <= start + 1000L && i <= 500) {
    
    				System.out.println(i);
    
    				i = i + 1;
    
    				nowtime = System.currentTimeMillis();
    
    			}
    			try {
    				Thread.sleep(start + 1000 - nowtime);
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    
    		}
    
    	}
    
    }
    

    上面代码是输出500歇息一些

    评论

报告相同问题?

悬赏问题

  • ¥30 LSTM预测结果是一条直线
  • ¥15 stnodeeditor自定义控件
  • ¥15 SDO如何更改STM32的波特率
  • ¥15 elasticsearch
  • ¥15 uniapp的uni-datetime-picker组件在ios端不适配
  • ¥15 前端 uniapp App端在离线状态如何使用modbus 连接手机蓝牙进行读写操控机器?
  • ¥15 SQL语句根据字段自动生成行
  • ¥500 “掌声响起来”软件(不确定性人工智能)
  • ¥500 我要找大模型一体机产品手册和应用案例
  • ¥15 ubuntu实验生成可执行文件main失败