java多线程选择实现Runnable接口而不是直接继承Thread类的原因: 1、将线程的任务从线程的子类中分离了出来,进行了单独的封装,按照面向对象的思想将任务封装成对象。 2、避免了java单继承的局限性。