多线程:多任务执行多路径执行

本文详细介绍了Java中多线程的创建方式,包括实现Runnable接口和使用Callable接口,并讨论了线程池的优点。讲解了线程的生命周期状态,如新生、就绪、运行、阻塞和终止状态,以及如何在不同状态下转换。此外,文章还深入探讨了线程安全问题,同步锁的使用,包括同步方法和同步块,以及线程通信的wait、notify方法的应用。
摘要由CSDN通过智能技术生成

一.

最常见创建线程的方式:实现Runable接口,重写run方法

优点:接口多实现类的单继承

        资源共享

注意:多个线程同时操作同一份资源就有可能出现数据不安全问题可以通过共享的标识控制多线程执行中线程的结束

重写juc包下callbale接口,重写call方法,在call方法中定义线程体

创建与开启:使用线程池实现

优点:

        1.call中可以抛出异常

        2.call可以存在返回值(线程执行完毕的结果)

ExecutorService:提供了一些线程池管理线程执行的相关方法

Future表示异步计算的结果

线程状态:

        新生状态:

        就绪状态:调用start方法,线程就会进入绪队列

        运行状态:当cpu调度就绪的线程,线程开始执行。

        阻塞状态:线程一旦进入阻塞状态,需要等待阻塞解除

        终止状态: 

当线程进入阻塞状态,阻塞状态接触后不会直接恢复到运行状态,会直接进入到就绪状态,等待cpu的下次调度

如果一个线程已经进入终止状态,无法恢复

如何进入终止状态:

1.正常执行完毕

2.stop()已过时,不推荐

3.通过添加标识判断

如何进入就绪状态:

1.start()

2.阻塞恢复

3.线程切换,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值