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
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歇息一些
上面的代码不会死循环啊,而且也能达到你的目的,一秒内print 500个数字出来。
一般在10~20ms之内就可以把500个数字print出来。
我认为可以直接发 500 次,然后剩下的时间就直接等待。
有些代码我没写,这个是个flink程序,需要模拟数据,还有别的代码,会一直循环发送,前面1秒钟可以循环500次,到后面循环完不成,过一段时间就会OOM
发完500继续发500
您好,我是问答小助手,你的问题已经很多小伙伴为您解答了问题,您看下是否解决了您的问题。
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~