不推荐的
大家都知道:suspend()、resume()、stop()这些方法已经被废弃了。suspend()、resume()如果使用不当,容易造成公共的同步对象资源的独占以及导致数据不同步。用官网的话说:
This method has been deprecated, as it is inherently deadlock-prone. If the target thread holds a lock on the monitor protecting a critical system resource when it is suspended, no thread can access this resource until the target thread is resumed. If the thread that would resume the target thread attempts to lock this monitor prior to calling resume, deadlock results. Such deadlocks typically manifest themselves as “frozen” processes.
以下摘自:http://blog.csdn.net/jianggujin/article/details/50458486
在JDK1.2以前的版本如果要实现线程的暂停、恢复和停止的方法分别是suspend()、resume()、stop()。但是从JDK1.2以后这些方法已经被遗弃,因为它们有可能造成严重的系统错误和异常。
首先suspend()方法不会释放线程所占用的资源。如果使用该方法将某个线程挂起,则可能会使其他等待资源的线程死锁。而resume()方法本身并无问题,但是不能独立于suspend()方法存在。
其次调用stop()可能会导致严重的系统故障。因为该方法会使线程立刻中断指令执行,不管这段方法是否执行完毕。如果这个线程正在做重要的操作,对程序的运行起着支撑作用,这时如果突然中断其执行则会导致系统崩溃。
其他的方法
暂停:
有必要先学习下sleep()、wait()、yeild()的区别:
sleep()与wait()——
区别:
1.wait()是用于线程间通信的,而sleep()是用于短时间暂停当前线程。
2.wait方法应在同步代码块中调用,但是sleep方法不一定需要。【换句话说就是:wait方法是针对一个被同步代码块加锁的对象,而sleep是针对一个线程。】
3.其中,sleep()方法是属于Thread类中的。而wait()方法是属于Object类中的。
sleep()方法导致了程序暂停执行指定的时间,让出cpu等资源给其他线程,但是并不会释放对象锁,它的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。sleep是生物钟,自己醒。
4.而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,以便其他正在等待该资源的线程得到该资源进而运行,只有其他线程调用了notify()(或n