Multithreading Scala Future:等待更新在另一个独立线程中发生

Multithreading Scala Future:等待更新在另一个独立线程中发生,multithreading,scala,future,thread-synchronization,Multithreading,Scala,Future,Thread Synchronization,我有一个类,它有自己的内部线程在一个操作队列上运行,它只是一直循环做事情。为此,它读取一个通知队列,通知它下一步要做什么。有一个通知告诉类停止所有操作并自杀。当另一个线程调用notifyClose通知时,它将被添加到队列中,优先级为1。我希望添加通知的方法在另一个线程处理完关闭通知后返回Future.success 代码按如下方式运行: def loop():未来[单位]={ 当前=例如,如果(queue.contains(KILL))禁用()//尝试将其用作一种状态 def loop(): F

我有一个类,它有自己的内部线程在一个操作队列上运行,它只是一直循环做事情。为此,它读取一个通知队列,通知它下一步要做什么。有一个通知告诉类停止所有操作并自杀。当另一个线程调用notifyClose通知时,它将被添加到队列中,优先级为1。我希望添加通知的方法在另一个线程处理完关闭通知后返回Future.success

代码按如下方式运行:

def loop():未来[单位]={
当前=例如,如果(queue.contains(KILL))禁用()//尝试将其用作一种状态

def loop(): Future[Unit] = {
  if(queue.contains(KILL)) Future.successful(disable.trySuccess())
  else process()                                
}

private val disable = Promise[Unit]()

def close(): Future[Unit] = {
  queue.add(KILL)
  disable.future
}
通过这种方式,
close()
返回的
Future
将仅在
loop()
实际调用
disable.trySuccess
时完成