从jdk1.5开始,Java提供了3中方式来创建、启动多线程:
1、继承Thread类来创建线程类,重写run()方法作为线程执行体;
2、实现Runnable接口来创建线程类,重写run()方法作为线程执行体;
3、实现callable接口来创建线程类,重写call()方法作为线程执行体。
其中,第一种方式的效果较差,有2点坏处:
线程类继承Thread类,无法再继承其他类;因为每条线程都是一个Thread子类的实例,因此多个线程之间共享数据比较麻烦。
另外,启动线程应该使用start()方法,而不是run()方法。直接调用run()方法,系统会把线程对象当成普通对象,把run()方法当成普通方法。