首先你要知道 TimerTask类实现自Runnable接口即 TimerTask implements Runnable.这就告诉我们了TimerTask类本质上来说它是对Runnable接口的一个实现类.即一个TimerTask类型对象本质上就是一个Runnable类型对象的一个多态形式.
TimerTask类是java语言专门为了配合java.util.Timer这个工具类的工作而设计的.换句话说TimerTask类就是专门为了java.util.Timer而设计的.二者必须配合使用,且它们俩是固定搭配(固定的搭档),这个你看看java.util.Timer类的构造函数你就知道了.即java.util.Timer仅仅支持对TimerTask类型任务的使用.即要想让一个任务(Runnable类型实例)运行(执行起来)于一个Timer类型实例上(Timer类型实例是一种特殊类型的Thread类型实例,这是个合理假想,因为实际上每一个Timer类型实例都对应与一个Thread类型实例进行了一一对应的绑定,这个Thread类型对象就是为该Timer类型对象服务的,并且Timer类型对象会将与它一一对应绑定的那个thread专用于去执行TimerTask类型任务),那么这个Runnable类型实例必须是一个TimerTask类型类的实例化对象(这与Runnable类型实例化对象必须寄生到Thread类型实例化对象上才能运行(被执行)的理念不谋而合).换句话说:TimerTask类型的对象必须嫁接(寄生)到java.util.Timer类型对象上才能够被运行(被执行).
_______________________________________________________________________________________________________________________
结论:TimerTask类型的对象是任务的一种(TimerTask是一种特殊类型的Runnable对象)它必须嫁接(寄生)到java.util.Timer类型对象上才能够被运行(被执行).
而java.util.Timer类型对象恰巧是一种特殊类型的thread对象(这是个合理的假想:实际上每一个Timer类型实例都对应与一个Thread类型实例进行了一一对应的绑定,这个Thread类型对象就是为该Timer类型对象服务的,并且Timer类型对象会将与它一一对应绑定的那个thread专用于去执行TimerTask类型任务).