创建线程有几种方式

继承 Thread 类

 Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。启动线 程的唯一方法就是通过 Thread 类的 start()实例方法。start()方法是一个 native 方 法,它将启动一个新线程,并执行 run()方法。

在这里插入图片描述

实现 Runnable 接口

	如果自己的类已经 extends 另一个类,就无法直接 extends Thread,此时,可以实现 一个 Runnable 接口。

在这里插入图片描述
在这里插入图片描述

实现 Callable 接口

Callabled 接口有点儿像是 Runnable 接口的增强版,它以 call()方法作为线程执行体, call()方法比 run()方法功能更强大。
call()方法可以有返回值,可以声明抛出异常类。 
 获取 call()方法里的返回值: 通过 FutureTask 类(实现 Future 接口)的实例对象的 get()方法得到,得到结果类型与创建 TutureTask 类给的泛型一致。 
 **具体代码实现** 
 1.定义实现 Callable 接口的实现类,并实现 call()方法。注意:Callable 有泛型限 制,与返回值类型一致。这里是 Integer public class ThirdThread implements Callable<Integer>{//重写 call()方法} 
 2.再创建 Callable 实现类的实例 tt。 ThirdThread tt = new ThirdThread(); 		 	    
 3.使用 FutureTask 类包装 Callable 的实例 tt。 FutureTask<Integer> tas= new FutureTask<Integer>(tt);//注意:泛型限制与返 回结果一致。 
 4.以 FutureTask 对象(task)作为 Thread 的 target 来创建线程,并启动。 new Thread(task, "线程").start(); 
 5.调用 FutureTask 对象(task)的 get()方法获得返回值 Integer result = task.get();//会有异常

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值