创建线程3种方式

创建线程3种方式:

1)继承Thread类;
1.创建Threa类对象,重写run方法,调用Start()方法启动线程
class Saler extends Thread{
public void run() {
s1.start();
优点:可以直接使用Thread类中的方法,代码比较简单
缺点:继承了Threa就不能继承其他的类
2)实现runnable接口,重写run方法;
1.创建Threa类对象,将实现runnable接口的实例对象作为形参,执行带参构造函数,调用Start()方法启动线程
class TrainStation implements Runnable{
public void run() {
TrainStation station = new TrainStation(list, “浠水火车站”);
Saler s1 = new Saler(station, “李祥”, 3);
(注意:这里的Saler是继承Threa类,即Threa类对象,而TrainStation是实现了runnable接口,TrainStation的实例对象作为形参传入Saler)
优点:实现接口,不影响继承其他类
缺点:
3)实现Callable接口,重写call方法;
1.实现Callable接口
class CDownloader implements Callable{
2.重写call方法
public Boolean call() throws Exception {
3.创建执行服务,新建线程池
4.提交执行
5.获取结果
6.关闭服务
//创建执行服务
ExecutorService ser = Executors.newFixedThreadPool(3);
//提交执行
Future result1 = ser.submit(cd1);
Future result2 = ser.submit(cd2);
Future result3 = ser.submit(cd3);
//获取结果
Boolean r1 = result1.get();
Boolean r2 = result2.get();
Boolean r3 = result3.get();
//关闭服务
ser.shutdownNow();
优点:可以获取返回值,可以声明异常
缺点:实现方法稍微复杂一点

发布了19 篇原创文章 · 获赞 0 · 访问量 409

猜你喜欢

转载自blog.csdn.net/Lixiang1008/article/details/104529701