1.继承thread
①将当前线程要执行的操作声明在run()内
②实例化Thread类的子类,调用其start():启动线程、调用当前线程的run()
2.实现runable:
①类可以实现多个接口;但是只能继承一个父类
② 实现的方式更方便的来处理有共享数据的情况
3.实现callable:
①可以在cal方法中抛出异常,更灵活
②call相对于run方法可以有返回值
③可以通过泛型指定返回值的确定类型
4.使用线程池:
①降低了资源消耗,使用完可以被复用
②提高了程序响应速度
③便于管理