java怎么暂停线程和重启线程
导读:在Java中,我们可以通过使用Thread类的suspend( 方法来暂停线程,还可以使用resume( 方法来恢复线程。但是,这种方式是不推荐使用的,因为它可能会导致死锁和资源争用问题。实际上,自从JDK1.2之后,这两个方法就被标记为“...
在Java中,我们可以通过使用Thread类的suspend()方法来暂停线程,还可以使用resume()方法来恢复线程。但是,这种方式是不推荐使用的,因为它可能会导致死锁和资源争用问题。实际上,自从JDK1.2之后,这两个方法就被标记为“不安全”。那么,我们该怎么办呢?下面介绍两种更好的暂停和重启线程的方法。
一、使用wait()和notify()
//先创建一个名为myThread的线程Thread myThread = new Thread(new Runnable() {
public void run() {
// do something}
}
);
//暂停线程synchronized (myThread) {
myThread.wait();
}
//重启线程synchronized (myThread) {
myThread.notify();
}
在上面的代码中,我们首先使用wait()方法暂停myThread线程,然后使用notify()方法重新启动它。
二、使用一个标志位
//先创建一个名为myThread的线程volatile boolean running = true;
Thread myThread = new Thread(new Runnable() {
public void run() {
while (running) {
// do something}
}
}
);
//暂停线程running = false;
//重启线程running = true;
在上面的代码中,我们使用一个volatile类型的标志位来控制myThread线程是否继续运行。使用这种方式,我们可以直接修改标志位来暂停和重启线程。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: java怎么暂停线程和重启线程
本文地址: https://pptw.com/jishu/504777.html
