Java多线程管理(四)

Java生命周期管理

线程类
粗粒度
细粒度: 线程之间有同步操作

  • 等待
  • 通知/唤醒
  • 终止

线程状态:

  • NEW 刚创建(new)
  • RUNNABLE 就绪态(start)
  • RUNNING 运行中(run)
  • BLOCK 阻塞(sleep)
  • TERMINATED 结束

Thread类的部分API已经废弃:(老的,旧的,不安全的)

  • 暂停和恢复suspend/resume(有危险的)
  • 消亡stop/destroy(危险)

线程阻塞和唤醒

  • sleep,时间一到,自己会醒来
  • wait/notify/notifyAll,等待,需要别人来唤醒
  • join,等待另外一个线程结束
  • interrupt,向另外一个线程发送中断信号,该线程收到信号,会触发InterruptException(可解除阻塞),并进行下一步处理。

线程被动地暂停和终止

  • 依靠别的线程线程来拯救自己(这种情况很危险,如我打开一个文件或者我拿着一个锁对象,一旦线程进入wait状态,我没有恢复,别人是拿不到东西的)
  • 没有及时释放资源

线程主动暂停和终止

  • 定期监测共享变量
  • 如果需要暂停或者终止,先释放资源,在主动动作
  • 暂停:Thread.sleep(),休眠
  • 终止:run方法结束,线程终止

多线程死锁

  • 每个线程互相持有别人需要的锁(哲学家吃面问题)
  • 预防死锁,对资源进行等级排序

守护(后台)线程

  • 普通线程的结束,是run方法运行结束
  • 守护线程的结束,是run方法运行结束,或main函数结束
  • 守护线程永远不要访问资源,如文件或数据库等

线程查看工具jvisualvm

经典问题:

  1. 生产者消费者问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值