守护线程及六种线程状态简介

守护线程及六种线程状态简介

1. 守护线程
守护线程一般用于:
	1. 自动下载
	2. 操作日志
	3. 操作监控

方法是通过线程对象
	setDeamon(boolean flag);
		true为守护线程
		false缺省属性,正常线程
2. 线程状态
2.1 六种线程状态
状态导致状态的发生条件
NEW(新建)线程刚刚被创建,没有启动,没有调用start方法
RUNNABLE(可运行)线程已经可以在JVM中运行,但是是否运行不确定,看当前线程是否拥有CPU执行权
BLOCKED(锁阻塞)当前线程进入一个同步代码需要获取对应的锁对象,但是发现当前锁对象被其他线程持有,当前线程会进入一个BLOCKED。如果占用锁对象的线程打开锁对象,当前线程持有对应锁对象,进入Runnable状态
WAITING(无限等待)通过一个wait方法线程进入一个无限等待状态,这里需要另外一个线程进行唤醒操作。进入无限等待状态的线程是无法自己回到Runnable状态,需要其他线程通过notify或者notifyAll方法进行唤醒操作
TIMED_WAITING(计时等待)当前线程的确是等待状态,但是会在一定时间之后自动回到Runnable状态,例如 Thread.sleep() 或者是Object类内的wait(int ms);
TERMINATED(被终止)因为Run方法运行结束正常退出线程,或者说在运行的过程中因为出现异常导致当前线程GG思密达
4.2 TIMED_WAITING(计时等待)
Thread.sleep(int ms);
	在对应线程代码块中,当前线程休眠指定的时间。
Object类内  wait(int ms);
	让当前线程进入一个计时等待状态
		1. 规定的时间及时完毕,线程回到可运行状态
		2. 在等待时间内,通过其他线程被notify或者notifyAll唤醒

Sleep方法
	1. 调用之后休眠指定时间
	2. sleep方法必须执行在run方法内,才可以休眠线程
	3. sleep不会打卡当前线程占用的锁对象。
4.3 BLOCKED(锁阻塞)
线程中有锁存在,线程需要进入带有锁操作的同步代码,如果锁对象被别人持有,只能在锁外等待

锁阻塞状态的线程是否能够抢到锁对象有很多因素
	1. 优先级问题,非决定因素
	2. CPU执行概率问题。

后期高并发一定会存在多线程操作锁对象问题,秒杀,抢购...
	队列方式来处理锁对象。
4.3 BLOCKED(锁阻塞)
线程中有锁存在,线程需要进入带有锁操作的同步代码,如果锁对象被别人持有,只能在锁外等待

锁阻塞状态的线程是否能够抢到锁对象有很多因素
	1. 优先级问题,非决定因素
	2. CPU执行概率问题。

后期高并发一定会存在多线程操作锁对象问题,秒杀,抢购...
	队列方式来处理

六大线程状态

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值