在线程中怎么实现精确定时

如题所述

问题一:定时器一般是以线程的方式运行的,如果能得到该线程的引用,就可以像查看Thread一样查看定时器的运行状态。
如果可以修改源代码最好给他提供一个方法返回线程引用
问题二:TimerTask实现了接口Runnable,如果是以newThread(TimerTask)。
start()方式启动就是做为一个单独的线程运行的,如果是timeTask.run()那就是方法调用,虽然占据一个线程,但这个线程就是主线程,并没有启动新的线程;
既然实现线程,自然可以通过Thread的isAlive方法获取其live状态;
一般情况下(不发生异常),定时器会一直运行,如果JVM停止,那么线程必然已经终止,如果JVM中只有这一个线程在运行,那么JVM不停,这个定时器就是一定在运行中,如果JVM中还有其他线程在运行,那么JVM不停,这个定时器有可能已经终止
PS:无论用不用线程池,线程启动方式只有两种(不包含mainThread):一种是继承Thread类,然后直接同构引用调用start方法,第二种就是继承Runnable接口,通过newThread(newMyRunnableClass())。
start()方式启动。
无论如何,都会有一个Thread类的引用
补充:
一个tomcat只启动一个进程,而JVM的垃圾处理器也只有一个,所以在一个工程里运行System.gc也会影响到其他工程。
温馨提示:答案为网友推荐,仅供参考