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