[英]How to use java.util.stream.Stream in Clojure?
[英]How to use an infinite java.util.stream.Stream?
說我有一個無限的流:
Stream<Socket> stream = Stream.generate(() -> {
try {
return serverSocket.accept();
} catch (IOException e) {
throw new RuntimeException(e);
}
});
我希望能夠使用它像這樣:
stream.forEach(socket -> {
new Thread(() -> {
socket.getOutputStream().write("Hi there, client.");
});
});
但這似乎不起作用,這可能是因為我誤解了Java 8 Streams的一個關鍵方面。 我究竟做錯了什么?
@Andres Riofrio的答案:
stream
.<Runnable>map(socket -> () ->
socket
.getOutputStream()
.write("Hi there, client.")
) // create a Runnable that writes a string to the socket's output stream
.map(Thread::new) // transform each Runnable into a Thread
.forEach(Thread::start) // start each Thread
;
實際上,我的問題是我忘了啟動線程:
stream.forEach(socket -> {
new Thread(() -> {
socket.getOutputStream().write("Hi there, client.");
}).start();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.