请问各位大神:为什么这段代码运行后我的电脑超级慢?几乎就不懂了。。。 while(true)里面没有退出条件,成死循环了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 while循环里面要加break跳出循环的好 1、while是死循环2、使用了System.out.println,这个属于IO操作,当IO操作频率很高的时候,会占用大量系统资源,从而导致系统变慢 死循环 你应该设置一个跳出的flag 谢谢纪委的回答,可是if(tick>0)不算是退出的条件吗?打印语句里面还有“tick--”呢 如果非必要建议使用for循环控制比while好,至少不容易出现这种死循环。 线程while添加个等待Thread.sleep(200);不然光循环去了,没法干别的事了 if只是输出不输出语句的判断条件,即使不走判断,循环依然在继续,你写的这个if不具备退出条件。 死循环,即使tik<0,while还一直在执行可以把while(true)改成while(tik>0) 感觉这个不是线程安全的方法吧,这么多线程用一个int会不会出事呢,我也是新手 即便是真的需要死循环,也需要加个休眠语句,否则会吃光CPU的了。 使用死循环的正确方法:http://goobbe.com/questions/2231983/are-whiletrue-loops-so-bad死循环也不一定会把cpu全部用完http://goobbe.com/questions/1885885/why-does-whiletrue-with-thread-sleep-cause-100-cpu-usage 你没有实现线程同步,同时启动的几个线程都会去执行while循环,会不断的执行输出操作,你的ticket--是不会起到循环推出的作用的,因为对每个线程来说,他们各自的ticket初值都是30,CPU会不断的执行,所以你会发现你的电脑变慢。 死循环了···如果要一直循环,最好是在死循环里面加个 Thread.sleep(50); 让CPU休息一下··· CORBA问题 新手求教! 每日一题4 求助一个java程序 推荐一本关于API的好书籍 java继承的问题 苦恼的问题,快来帮帮小弟我(高分) 急::请指点!!(Thank You!!) 请问这里的method为什么必须是public? interrupt() 这个方法是做什么用的? JDK nio2的问题 Map中的containsKey方法
2、使用了System.out.println,这个属于IO操作,当IO操作频率很高的时候,会占用大量系统资源,从而导致系统变慢
if(tick>0)不算是退出的条件吗?打印语句里面还有“tick--”呢
不然光循环去了,没法干别的事了
可以把while(true)改成while(tik>0)
死循环也不一定会把cpu全部用完
http://goobbe.com/questions/1885885/why-does-whiletrue-with-thread-sleep-cause-100-cpu-usage
如果要一直循环,最好是在死循环里面加个 Thread.sleep(50); 让CPU休息一下···