创建线程的几种方式

一、继承Thread类 重写run()方法

二、实现Runnable接口 实现run()方法-----不能返回值、不能抛出异常

三、实现Callable接口  重写call()方法--------返回值  抛异常

第三种方式需要借助FutureTask来使用:new Thread(new FutureTask(new MyCallable())).start() ;   FutureTask中get()方法获取返回值

Thread(Runnable r)-----Thread构造方法

FutureTase实现了Runnable

注意:只有执行get()方法时才会触发异常抛出

          get()方法是一个阻塞方法

          一个FutureTask中call方法只会被执行一次

心有多大,天有多高,一起奋斗!!
原文地址:https://www.cnblogs.com/zhaolei1996/p/15057501.html