1,实现Runnable接口创建线程
特点:
A:将代码和数据分开,形成清晰的模型
B:线程体run()方法所在的类可以从其它类中继承一些有用的属性和方法
C:有利于保持程序风格的一致性
2,继承Thread类创建线程(其实底层还是实现的是Runnable接口中的run()方法)
特点:
A:Thread子类无法再继承其他类
B:编写简单,run()方法就是当前对对象的线程对象,可直接操作
3,通过线程池Executor 创建(在java1.5中提出的,提供了四种线程池)
特点:
这种了解的不是很多,总结不出来
综上,我们一般使用的是第一用方法,也很符合我们的java语言的特点