• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

Thread.sleep与定时器

java 来源:DanjahSoft Programmer 3次浏览

因此,在我的研究中,我发现使用计时器执行指令并执行指令,然后使线程进入休眠状态的主要区别。Thread.sleep与定时器

遵守以下代码

public class StkFlow { 
    public void event(ActionEvent e){ 
     //do some stuff 
    } 

    public static void main (String [] args){ 
     Timer tick=new Timer (200, event); 
     tick.start(); 
    } 
} 

AND

public class StkFlow { 
    public static void main (String[] args){ 
    while (/*Condition*/){ 
     //Do some stuff 
     Thread.sleep (200); 
    } 
} 

代码的第一片使用一个计时器,并执行一些代码每200ms和第二片的代码执行一些代码,并把该线程睡200ms。不同之处在于计时器已经为你迭代了,并且不像Thread.sleep那样暂停线程,停止所有的处理,(这里的主题是计时器),那么如果你有一个循环在里面呢,如果这个循环比较相同的对象?它会不断创建一个这个循环的新实例吗?如果它确实做了最终结果,比方说,如果它正在处理该循环中的一些重型指令?

E.G

public class StkFlow { 
    public void event(ActionEvent e){ 
     while (0==0){ 
      //do some heavy duty stuff 
     } 
    } 

    public static void main (String [] args){ 
     Timer tick=new Timer (200, event); 
     tick.start(); 
    } 
} 


===========解决方案如下:

的Thread.sleep其停止所有处理,所以如果你有里面一个循环,如果这个循环是比较相同的对象是什么?它会不断创建一个这个循环的新实例吗?如果它确实做了最终结果,比方说,如果它正在处理该循环中的一些重型指令?

不,它不会,你需要start()一个新的线程。 Thread.sleep()会停止当前线程,但是如果您在自己的线程中运行它,那么它不会停止主线程和每个可能在其自己的线程中运行的任务,而是可以在时间点之后启动它们。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)