multithreading - 如何使用 future 进行多线程处理?

标签 multithreading scala concurrent.futures

我是Scala的新手。我正在学习Scala中的多线程。 Scala中的一种多线程方法是scala.actors,但如今已弃用。因此,新方法是使用scala.concurrentakka.actor。我想使用scala.concurrent
设想:
我想制作一个聊天服务器,该服务器同时接受多个客户端的连接并返回响应。
我想做的方式是:

    while(true) {
      socket = serverSocket.accept()
      os = new PrintStream(socket.getOutputStream)
      br = new BufferedReader(new InputStreamReader(socket.getInputStream()))

      val newClient = Future {
        os.println("\n\nPlease Enter the Table name to be Extracted\t:")
        restr = br.readLine()

        println("data received from ["+socket.getInetAddress()+"] ["+socket.getPort()+"] and TableName ["+ restr +"]\n")
        new Extractor().extract(dbURL,userId,password,restr,os)
      }
     val clientFormed= newClient.isCompleted
      println("New Client Connection ? ["+clientFormed+"]")
    }

但是在运行程序之后,输出显示:
New Response made [false]

意味着 future 没有执行。连 sleep 都没有用。
我知道我这里缺少东西,但无法弄清楚。

更新
我知道while(true)在 future 之内不是正确的方法,但是true对于连续运行服务器是必需的。我知道我的方法是错误的。我要问的是:正确的方法是什么?

最佳答案

response是从while(true)开始的 future 。它不可能完成。

关于multithreading - 如何使用 future 进行多线程处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38607997/

相关文章:

c++ - 一种读取/写入大型场景文件的有效方法

Android Intents 和 Scala

scala - 是什么 ?类型?

python-3.x - 将 asyncio 的结果提供给 ProcessPoolExecutor

java - 创建线程不起作用

multithreading - Java线程如何在内核空间中调度?

templates - Ant-Ivy-Scala模板:有什么改进建议吗?

python - 如何在Python中使用concurrent.futures

python - 使用 concurrent.futures 一次消耗许多出队消息

iphone - 多线程在 Objective-C 中是如何工作的?