java - 如何在android中挂起和恢复线程?

标签 java android multithreading resume suspend

我刚刚注意到 android 线程中的挂起和恢复已被弃用。解决这个问题的方法是什么,或者我如何暂停和恢复 android 中的线程?

最佳答案

确实,在随机点挂起或停止线程是不安全的想法,这就是不推荐使用这些方法的原因。

在我看来,你能做的最好的事情就是在线程的 run 方法中设置固定的暂停点,然后使用 wait 停止:

class ThreadTask implements Runnable {

     private volatile boolean paused;
     private final Object signal = new Object();

     public void run() {
         // some code

         while(paused) { // pause point 1
            synchronized(signal) signal.wait();
         }

         // some other code

         while(paused) { // pause point 2
            synchronized(signal) signal.wait();
         }

         // ...
     }

     public void setPaused() {
         paused = true;      
     }

     public void setUnpaused() {
         paused = false;
         synchronized(signal) signal.notify();
     }
}

关于java - 如何在android中挂起和恢复线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10189289/

相关文章:

java - 从 LinkedHashMap 中删除包含键 <String> 和值 LinkedList<String> 的特定值

java - Android 中的 GridView 中未触发 OnItemClick 事件

java - 下载管理器在网络断开和系统重启的情况下无法恢复下载

Java/线程优先级

java - Java应用程序中CPU核心数和线程数之间的关系是什么?

java - 使用picasso从json数据获取图像时出现空值

java - java.lang.NoSuchMethodError:org.jboss.logging.Logger.debug Spring 4.3,Hibernate 5.1

android - 将 Wav 文件重新编码为 AAC LC、AMR WB/NB

java - 如何维护一个持久化的后台线程?

java - Websocket 的握手异常