Thread线程的状态改变操作

 1. 首先Thread.sleep(long millis):方法 这个大家都不陌生;一定是当前的线程调用此方法,当前线程进入TIMED_WAITING 状态!但不 会释放对象锁。时间结束之后自动苏醒进入runnable 状态

 2.Thread.yield,一定是当前线程调用此方法,当前线程放弃获取的 CPU时间片,但不释放锁资源,由运行状态变为就绪状态 

3:t.join()/t.join(long millis),当前线程里调用其它线程t的join方法,当前线程进入WAITING/TIMED_WAITING状态,当前线程不会释放已经持有的对象锁,因为内部调用了t.wait,所以会释放t这个对象上的同步锁。线程 t执行完毕或者millis时间到,当前线程进入就绪状态。其中,wait 操作对应的notify是由jvm 底层的线程执行结束前触发的。

其实就是当前的线程方法 执行到这个t.join 之后就会把自己先暂停掉,先去执行调用T.JOIN里的代码块run方法 等待执行完成之后 在执行当前后续的代码

 4. obj.wait(),当前线程调用对象的 wait()方法,当前线程释放
obj对象锁,进入等待队列。依靠notify()/notifyAll()唤醒或者wait(Iong timeout)timeout时间到自动唤醒。唤醒会,线程恢复到 wait 时的状态。

5. obj.notify()唤醒在此对象监视器上等待的单个线程,选择是任意性的。

思考:wait 方法 跟sleep方法的区别?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值