蚂蚁课堂创始人-余胜军原创制作,其他网站转载请说明原创作者,QQ644064779
类中的。
sleep()方法导致了程序暂停执行指定的时间,让出 cpu 该其他线程,但是他的监控状态依然保持者,
当指定的时间到了又会自动恢复运行状态。
在调用 sleep()方法的过程中,线程不会释放对象锁。
而当调用 wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用
notify()方法后本线程才进入对象锁定池准备
获取对象锁进入运行状态。
Lock 与 Synchronized 区别?
Lock 接口可以尝试非阻塞地获取锁 当前线程尝试获取锁。如果这一时刻锁没有被其他线程获取到,则
成功获取并持有锁。
*Lock 接口能被中断地获取锁 与 synchronized 不同,获取到锁的线程能够响应中断,当获取到的锁
的线程被中断时,中断异常将会被抛出,同时锁会被释放。
Lock 接口在指定的截止时间之前获取锁,如果截止时间到了依旧无法获取锁,则返回。
Condion 用法
Condition 的功能类似于在传统的线程技术中的,Object.wait()和 Object.notify()的功能,
代码:
Condition condition = lock.newCondition();
res. condition.await(); 类似 wait
res. Condition. Signal() 类似 notify
Signalall notifyALL
如何停止线程?
1. 使用退出标志,使线程正常退出,也就是当 run 方法完成后线程终止。
2. 使用 stop 方法强行终止线程(这个方法不推荐使用,因为 stop 和 suspend、resume 一样,
也可能发生不可预料的结果)。
3. 使用 interrupt 方法中断线程。 线程在阻塞状态
评论12
最新资源