线程基本信息详解

本文详细介绍了线程的五种状态,包括创建、就绪、运行、阻塞和死亡,并讲解了线程的三种阻塞情况。此外,文章对比了sleep()、wait()、yield()、join()的区别,讨论了线程安全和守护线程的概念。还探讨了线程池的重要性、参数以及阻塞队列的作用,强调了线程池先添加队列而非先创建最大线程的原因,最后解释了线程复用的原理。
摘要由CSDN通过智能技术生成

线程基本信息详解

线程的五种状态

创建: 新建一个线程对象
就绪:线程调用 start() 方法, 变得可运行,等待 CPU资源
运行:线程获取 CPU资源,执行程序代码;
阻塞:线程应为某种原因放弃CUP资源,暂时停止运行,直至线程再次进入就绪状态,才有机会运行;
死亡: 线程执行完成或者 异常退出 run()方法,该线程结束生命周期;

线程的三种阻塞情况

等待阻塞: 运行的线程执行 wait(),线程会释放资源,JVM会把线程添加到’等待池’中,该种情况线程不能自动唤醒,需要调用 notify()或者notifyAll()才能唤醒;wait()是object的方法;
同步阻塞: 运行线程在获取对象同步锁时,若该同步锁被其他线程占用,则JVM将该线程放入到 ‘锁池’中;
其他阻塞: 运行线程执行 sleep(), join(),或者发生 I/O请求时,JVM会将线程设置成阻塞状态,当sleep超时,join等待结束或者超时,I/O执行完成时,线程会进入到就绪状态; sleep()是 Thread 的方法;

sleep(),wait(), yeid(), join() 的区别

锁池 : 所有需要竞争同步锁 (synchronized)的线程才会放入到 '锁池’中;例如,当线程B去获取同步锁时,发现同步锁已经被 A线程 占用,那么线程B就会进入‘锁池中’;
等待池: 当线程 执行 wait() 方法时(使用wait()方法必须是在 synchronized中),

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值