publicstaticvoid main(String[] args) throws Exception { int requests = 25_000; if (args.length > 0) {
requests = Integer.parseInt(args[0]);
}
AtomicInteger requestsHandled = new AtomicInteger();
// Create HTTP on the loopback address. The server will reply to // the requests to GET /hello. It uses virtual threads.
InetAddress lb = InetAddress.getLoopbackAddress();
HttpServer server = HttpServer.create(new InetSocketAddress(lb, 0), 1024);
ThreadFactory factory = Thread.ofVirtual().factory();
server.setExecutor(Executors.newThreadPerTaskExecutor(factory));
server.createContext("/hello", e -> { byte[] response = "Hello".getBytes("UTF-8");
e.sendResponseHeaders(200, response.length); try (OutputStream out = e.getResponseBody()) {
out.write(response);
}
requestsHandled.incrementAndGet();
});
// URL for hello service
URL url = URIBuilder.newBuilder()
.scheme("http")
.loopback()
.port(server.getAddress().getPort())
.path("/hello")
.toURL();
// go
server.start(); try {
factory = Thread.ofVirtual().name("fetcher-", 0).factory(); try (var executor = Executors.newThreadPerTaskExecutor(factory)) { for (int i = 1; i <= requests; i++) {
executor.submit(() -> fetch(url)).get();
}
}
} finally {
server.stop(1);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.