`

菜鸟线程第一弹——初接触~

阅读更多

本菜鸟最近搞程序时,遇到了一个java编写延时函数的问题。大家可能都知道,延时函数只需要用到Thread.delay()就可以轻松搞定了,但是俺当时懵懂状态,因为以前做过一个定时器,所以想着是否可以用定时取代延时的功能呢?

首先,俺创建了一个Timer的对象:Timer timer=new Timer();

然后,在类中建立了一个timerTask的类用于实现TimerTask接口;并重写了其中的run()函数部分:

代码如下:

public timerTask implements TimerTask{

void run()

{

return ;

}

}

并在主类中使用timer.schedule()的函数,来等到一定的时间后执行task任务,而task任务又是return的,这样就达到了延时的目的,程序写到这里,还感觉心里美滋滋的~

但是实际运行起来,却发现不仅没有达到延时的目的,而且程序是执行不完的,即一直没有执行到尽头。这让我很郁闷,最后想了想,有查了查,原来timer只是开启了另一个线程,在另一个线程中执行了task的任务,所以延时是没有效果的,这是因为两个线程在时间上看是同时执行的!这也就是线程的意义所在了。

那么程序为什么执行不完呢,那时因为这个线程开启了之后还是需要关闭的,而我没有在线程中设置关闭它的方法,所以才造成了现在的情况!

恩,到现在为止问题的叙述和探索已经差不多了,菜鸟的旅行又要开始了~下次回事神马问题呢?期待中......

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics