gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 13:19:23 26 4
gpt4 key购买 nike

我是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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com