use*_*434 6 java multithreading
我把这作为一个面试问题.
为什么Thread类不是最终的?你为什么要延长线程?
我无法想出现实世界的用例.
das*_*ght 10
来自Oracle的文档:
有两种方法可以创建新的执行线程.一种是将一个类声明为Thread的子类.该子类应该重写Thread类的run方法.创建线程的另一种方法是声明一个实现Runnable接口的类.
所以答案是"你可能想要子类Thread来覆盖它的run()方法."
引用的段落已经在Java文档中回溯到JDK 1.1.Java已经添加了其他方便的类来管理并发,最值得注意的是,注释中提到的执行程序,可能会减少或消除扩展的需要Thread.final然而,他们无法做到这一点,因为这会破坏向后兼容性.
就实际原因而言,我认为你可能希望扩展Thread而不是Runnable今天实现的唯一原因是覆盖其他 方法run().例如,您可能希望添加日志记录或其他清理.