Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.IOException;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.util.concurrent.atomic.AtomicInteger;
- public class ServerSimulator2017 {
- private static final boolean SIMULATE_PROCESSING = false;
- private static final int PORT = 443;
- private static final AtomicInteger LAST_SECOND_REQUESTS = new AtomicInteger(0);
- private static final AtomicInteger ALL_REQUESTS = new AtomicInteger(0);
- public static void main(String[] args) throws IOException {
- final long start = System.currentTimeMillis();
- final ServerSocket ss = new ServerSocket(PORT);
- new Thread(() -> {
- while (true) {
- System.out.println("Requests in the last second: " + LAST_SECOND_REQUESTS.getAndSet(0));
- System.out.println("Avg: " + (ALL_REQUESTS.get() * 1000 / (float) (System.currentTimeMillis() - start)) + " req/sec");
- System.out.println("------------------------------------");
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }).start();
- while (true) {
- new RequestHandler(ss.accept()).start();
- LAST_SECOND_REQUESTS.getAndIncrement();
- ALL_REQUESTS.getAndIncrement();
- }
- }
- private static class RequestHandler extends Thread {
- private final Socket client;
- private RequestHandler(Socket client) {
- this.client = client;
- }
- @Override
- public void run() {
- if (SIMULATE_PROCESSING) {
- try {
- Thread.sleep(1000);
- } catch (InterruptedException e) {
- throw new IllegalStateException(e);
- }
- }
- try {
- client.close();
- } catch (IOException ignored) {
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement