方法一:继承Thread类
方法二:实现Runnable接口
方法三:实现Callable接口
前两种方法需要重写run方法,第三种方法需要重写call方法。因为Java不允许多继承,允许实现多个接口,所以方法二比方法一灵活。方法三与方法二类似,但可以获得返回值,功能更强大。用Callable对象实例化一个FutureTask对象,FutureTask对象既可以像Runnable对象那样用来实例化一个线程,又能调用它的get方法来获得call方法的返回值。
方法一:继承Thread类
方法二:实现Runnable接口
方法三:实现Callable接口
前两种方法需要重写run方法,第三种方法需要重写call方法。因为Java不允许多继承,允许实现多个接口,所以方法二比方法一灵活。方法三与方法二类似,但可以获得返回值,功能更强大。用Callable对象实例化一个FutureTask对象,FutureTask对象既可以像Runnable对象那样用来实例化一个线程,又能调用它的get方法来获得call方法的返回值。