Java 进阶多线程(一)

本文详细介绍了Java中实现多线程的三种方式:继承Thread类、实现Runnable接口和实现Callable、FutureTask接口,包括各自的优缺点。还讨论了线程安全、线程同步的概念,包括同步代码块和Lock锁的使用。
摘要由CSDN通过智能技术生成

文章目录

一、多线程

1、继承Thread类(方式一)

1)实现多线程

继承Thread类

重写run()方法

创建线程对象

调用start()方法启动

调用run方法会当成普通方法执行,只有调用start方法才是启动一个新的线程执行

2)优缺点

  • 优点

编码简单

  • 缺点

是单继承,线程类继承Thread后,不能继承其他类,不便于扩展

2、实现Runnable接口(方式二)

1)实现多线程

定义一个线程任务类MyRunnable实现Runnable接口,重写run()方法

创建MyRunnable对象

把MyRunnable任务对象交给Thread线程对象处理

调用线程对象的start()方法启动线程

2)实现多线程(匿名内部类方式)

创建Runnable的匿名内部类对象

交给Thread处理

调用线程对象的start()启动线程

3)优缺点

  • 优点

实现了Runnale接口,可以继续继承和实现

  • 缺点

线程有执行结果是不能直接返回

3、实现Callable、FutureTask接口(方式三)

1)实现多线程

创建Callable接口实现类,重写call()方法,封装

用FutureTask把Callable对象封装成线程任务对象

线程任务对象交给Thread处理,调用start()方法启动线程,执行任务

执行完毕后,通过FutureTask的get方法去获取任务执行的结果

2)优缺点

  • 优点

线程任务类只是实现接口,可以继续继承类和实现接口,扩展性强。

可以在线程执行完毕后去获取线程执行的结果。

  • 缺点

编码复杂

方法名 解释
public FutureTask<>(Callable call) 把Callable对象封装成FutureTask对象
public V get() throws Exception 获取线程执行call方法返回的结果

4、Thread线程

1)Thread的构造器

构造器 解释
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值