java并发编程基础--线程的挂起、恢复及中断操作
2019-02-18 16:55
148 查看
一、线程挂起与恢复
1、在久的JDK版本中,提供了下面两个方法,但目前已经废弃了,Thread源码中都加了@Deprecated注解
thread.suspend() 该方法不会释放线程所占用的资源。如果使用该方法将某个线程挂起,则可能会使其他等待资源的线程死锁
thread.resume() 方法本身并无问题,但是不能独立于suspend()方法存在
2、可以使用的方法:
wait() 暂停执行、放弃已经获得的锁、进入等待状态
notify() 随机唤醒一个在等待锁的线程
notifyAll() 唤醒所有在等待锁的线程,自行抢占cpu资源
##在下面的测试代码中,大家要注意必须是同一个锁,且锁的对象必须一致,不然会报错
[code]public class WaitDemo implements Runnable { private static Object waitObj = new Object(); @Override public void run() { //持有资源 synchronized (waitObj) { System.out.println(Thread.currentThread().getName()+"占用资源"); try { waitObj.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println(Thread.currentThread().getName()+"释放资源"); } public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(new WaitDemo(),"对比线程"); thread.start(); Thread thread2 = new Thread(new WaitDemo(),"对比线程2"); thread2.start(); Thread.sleep(3000L); synchronized (waitObj) { waitObj.notify(); } } }
结果如右,随机唤醒了一个线程
二、线程中断
1)stop() ,是废弃方法,开发中不要使用。因为一调用,线程就立刻停止,此时有可能引发相应的线程安全性问题
2)调用Thread.interrupt方法
3)自行定义一个标志,用来判断是否继续执行
相关文章推荐
- 第四十一讲 深入线程(操作线程的,执行,挂起,恢复,关闭 及 Join的用法)
- -线程操作之线程的挂起和恢复
- iOS边练边学--多线程NSOperation介绍,子类实现多线程的介绍(任务和队列),队列的取消、暂停(挂起)和恢复,操作依赖与线程间的通信
- 操作线程的方法:休眠、挂起、中断
- C#多线程开发2:线程挂起,恢复与中止等操作
- Java并发编程(3):线程挂起、恢复与终止的正确方法(含代码)
- java并发编程(三)--线程挂起、恢复与终止的正确方法
- Java并发编程基础---(12)线程的中断
- java并发编程(一)----线程基础知识
- Java多线程-一个简单的线程,实现挂起和恢复的功能
- C# 线程的挂起与恢复
- Java并发编程(二)线程任务的中断(interrupt)
- 【Java并发编程】之三:线程挂起、恢复与终止的正确方法(含代码)
- rman恢复基础操作
- java基础中如何中断/阻塞线程和使用中断
- 【Java并发编程】:线程挂起、恢复与终止
- 线程挂起,恢复与终止
- Linux下线程的挂起和恢复
- Java多线程之线程的挂起与恢复(Suspend/Resume)
- 线程基础之挂起与通知