繁体   English   中英

我应该使用哪种同步方法来暂停使用者队列线程?

[英]What synchronization method should I use for pausing a consumer queue thread?

我有一个带有LinkedBlockingQueue的Android应用程序,用于在单独的线程(称为网络线程)上运行一系列网络作业。 当我从网络作业中获得某些响应时,我需要暂停作业以供对话框中的用户输入。 我想在用户输入完成之前阻止网络线程,然后取消阻止它,以便它可以继续处理网络作业。 哪种并发机制在这里最有意义?

编辑:由于暂停是根据网络作业的结果执行的,因此暂停事件来自网络线程,

编辑:您的编辑使分辨率更容易。 您仍然需要发信号,但是您可以划掉我放入的复杂内容。您可以使用简单的ReentrantLock和标志。

也许像这样

boolean needsToWaitForUserInput = false;
final ReentrantLock lock = new ReentrantLock();
final Condition waitingCondition = lock.newCondition();

private final Runnable networkRunnable=new Runnable(){ 
  public void run(){
      //get network information
      lock.lock();
      needsToWaitForUserInput  = true;
      try{      
         while(needsToWaitForUserInput ){
            waitingCondition.await();
         }
      }finally{ 
          lock.unlock();
      }
   }
}
    public void signalJobToContinue(){
      lock.lock();
      try{      
            needsToWaitForUserInput =false;
            waitingCondition.signal();
      }finally{ 
         lock.unlock(); 
      }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM