问题描述
publicvoidrun(){while(true){try{longstart=System.currentTimeMillis();repaint();longend=System.currentTimeMillis();if(end-start<SLEEP_TIME){Thread.sleep(SLEEP_TIME-(end-start));}}catch(Exceptione){}}}publicvoidrun(){while(true){try{Thread.currentThread().sleep(100);}catch(Exceptione){}}}这两种方法之间的区别?
解决方案
解决方案二:
在end和Start时间区内执行repaint()方法,而Thread.Sleep(200)可以什么都不做只是等待。
解决方案三:
不知道楼主想问的具体是什么问题我看代码只知道1.当java重绘的很快的话,就不用SLEEP2.就是单纯一个SLEEP方法啊,不干怎么活repaint()方法用于重绘组件,该方法有下面四种形式:1。publicvoidrepaint()2。publicvoidrepaint(longtm)//指定调用update方法之前等待的最大毫秒数tm3。publicvoidrepaint(intx,inty,intwidth,intheight)//重绘组件的指定矩形区域4。publicvoidrepaint(lingtm,intx,inty,intwidth,intheight)repaint方法不总是马上执行,Java虽然会尽可能快的执行repaint,当Applet运行在较慢的平台上或计算机较忙时,应该考虑使用第2或4种repaint方法,指定在多长时间内必须执行repaint,否则就放弃。
解决方案四:
ry{Thread.currentThread().sleep(100);}这个不是休眠只是等待100毫秒而已
解决方案五:
感觉是没什么变化的一半都用第二种
解决方案六:
都是休眠,几乎没什么区别。第一种:用于设置每秒固定刷新的帧数,保证刷新频度。核心在于“if(end-start<SLEEP_TIME)”这个判断是关键。第二种:每次任务执行完后都固定停留所设定的时间数。优点在于简单,缺点在于如果每次任务计算量较多耗时长,再加上停留时间,可以会导致画面不连贯。使用第一种方法可避免这个缺点。
解决方案七:
都是休眠,几乎没什么区别。第一种:用于设置每秒固定刷新的帧数,保证刷新频度。核心在于“if(end-start<SLEEP_TIME)”这个判断是关键。第二种:每次任务执行完后都固定停留所设定的时间数。优点在于简单,缺点在于如果每次任务计算量较多耗时长,再加上停留时间,可以会导致画面不连贯。使用第一种方法可尽量避免这个缺点。
解决方案八:
通俗点就是1,等图像画完成后再刷新一下屏幕2,不管是图像有没有画完,都会自动的100毫秒刷新一下屏幕