继承Thread的多线程,start启动线程的时候,每次start都会创建一个新的对象,多个对象就不能拥有同一个资源,不能synchronized来进行同步操作。
而实现Runnable的多线程类,start启动线程的时候,所有线程操作一个对象,可以共享资源,如果需要的情况下可以synchronized同步。
一般实现runnable接口,因为:
1.Java不支持多继承。因此扩展Thread类就代表这个子类不能扩展其他类。而实现Runnable接口的类还可能扩展另一个类。
2.类可能只要求可执行即可,因此继承整个Thread类的开销过大。