黑马程序员技术交流社区

标题: 多线程的实现方式 [打印本页]

作者: 花落村下    时间: 2017-12-4 16:22
标题: 多线程的实现方式
多线程的实现方式
:继承Thread类
1.定义一个类继承Thread。
2.重写run方法。
3.创建子类对象,就是创建线程对象。
4.调用start方法,开启线程并让线程执行,同时还会告诉jvm去调用run        方法
注意事项:同一个对象,不能开启多次线程,否则会抛出异常
:实现Runnable接口
创建线程的步骤。
1、定义类实现Runnable接口。
2、重写接口中的run方法。。
3、创建Thread类的对象
4、将Runnable接口的子类对象作为参数传递给Thread类的构造函数。
5、调用Thread类的start方法开启线程。
:定义一个类,实现Callable接口,重写call()方法
1)接口 Callable<V>
类型参数:V - call 方法的结果类型
返回:计算结果,此结果类型与你Callable泛型一致
抛出:如果无法计算结果,则抛出一个异常
2)类 FutureTask<V>
类型参数:V - 此 FutureTask 的 get 方法所返回的结果类型。
可使用 FutureTask 包装 Callable Runnable 对象。因为 FutureTask 实现了 Runnable,所以可将 FutureTask 提交给 Executor 执行
构造方法:
a)public FutureTask(Callable<V> callable):创建一个 FutureTask,一旦运行就执行给定的 Callable。
参数:callable - 可调用的任务。
抛出:NullPointerException - 如果 callable 为 null。
b)public FutureTask(Runnable runnable,V result):创建一个 FutureTask,一旦运行就执行给定的 Runnable,并安排成功完成时 get 返回给定的结果 。
参数:runnable - 可运行的任务。
result - 成功完成时要返回的结果。如果不需要特定的结果,则考虑
使用下列形式的构造:
Future<?> f = new FutureTask<Object>(runnable, null)
抛出:NullPointerException - 如果 runnable 为 null。
成员方法:
public V get():从接口Future复制的描述,如有必要,等待计算完成,然后获取其结果。
指定者:接口 Future<V> 中的 get
返回:计算的结果
抛出: CancellationException - 如果计算被取消
InterruptedException - 如果当前的线程在等待时被中断
ExecutionException - 如果计算抛出异常

作者: 奥斯托洛夫斯基    时间: 2017-12-8 15:55

作者: 花落村下    时间: 2017-12-10 21:32
奥斯托洛夫斯基 发表于 2017-12-8 15:55

谢谢老铁!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2