Make ProxyServer not extend from Thread

This commit is contained in:
Volkan Yazıcı 2025-08-14 20:28:41 +02:00
parent e320162815
commit f722244afb
No known key found for this signature in database
GPG key ID: D37D4387C9BD368E

View file

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2015, 2024, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2015, 2025, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -40,7 +40,7 @@ import static java.util.stream.Collectors.toList;
* Two threads are created per client connection. So, it's not * Two threads are created per client connection. So, it's not
* intended for large numbers of parallel connections. * intended for large numbers of parallel connections.
*/ */
public class ProxyServer extends Thread implements Closeable { public final class ProxyServer implements Closeable {
// could use the test library here - Platform.isWindows(), // could use the test library here - Platform.isWindows(),
// but it would force all tests that use ProxyServer to // but it would force all tests that use ProxyServer to
@ -97,9 +97,7 @@ public class ProxyServer extends Thread implements Closeable {
this(port, debug, null); this(port, debug, null);
} }
public ProxyServer(Integer port, private ProxyServer(Integer port, Boolean debug, Credentials credentials)
Boolean debug,
Credentials credentials)
throws IOException throws IOException
{ {
this.debug = debug; this.debug = debug;
@ -108,15 +106,8 @@ public class ProxyServer extends Thread implements Closeable {
listener.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), port)); listener.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), port));
this.port = ((InetSocketAddress)listener.getLocalAddress()).getPort(); this.port = ((InetSocketAddress)listener.getLocalAddress()).getPort();
this.credentials = credentials; this.credentials = credentials;
setName("ProxyListener");
setDaemon(true);
connections = new CopyOnWriteArrayList<Connection>();
start();
}
public ProxyServer(String s) {
credentials = null;
connections = new CopyOnWriteArrayList<Connection>(); connections = new CopyOnWriteArrayList<Connection>();
Thread.ofPlatform().name("ProxyListener").daemon().start(this::run);
} }
/** /**
@ -148,7 +139,7 @@ public class ProxyServer extends Thread implements Closeable {
volatile boolean done; volatile boolean done;
public void run() { private void run() {
int id = 0; int id = 0;
try { try {
while (!done) { while (!done) {
@ -656,10 +647,11 @@ public class ProxyServer extends Thread implements Closeable {
int port = Integer.parseInt(args[0]); int port = Integer.parseInt(args[0]);
boolean debug = args.length > 1 && args[1].equals("-debug"); boolean debug = args.length > 1 && args[1].equals("-debug");
System.out.println("Debugging : " + debug); System.out.println("Debugging : " + debug);
ProxyServer ps = new ProxyServer(port, debug); try (ProxyServer ps = new ProxyServer(port, debug)) {
System.out.println("Proxy server listening on port " + ps.getPort()); System.out.println("Proxy server listening on port " + ps.getPort());
while (true) { while (true) {
Thread.sleep(5000); Thread.sleep(5000);
}
} }
} }
} }