# stephanyecunto/tcc_java_thread_benchmark architecture

> Architecture diagram of the GitHub repository stephanyecunto/tcc_java_thread_benchmark, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/stephanyecunto/tcc_java_thread_benchmark
- Repository: https://github.com/stephanyecunto/tcc_java_thread_benchmark

## Overview

This repository documents and supports an empirical comparison of traditional and virtual Java threads under I/O-bound load. The workflow is to run constant or ramping load experiments against a Spring Boot server, collect request and runtime metrics, and report findings in the thesis. The README documents thread and GC endpoints, Vegeta, and JFR/JMC monitoring; source excerpts were unavailable, so relationships rely on that documentation. Analysis artifacts and exact internal data-processing stages are not evident in the tree, so they are not represented as code subsystems.

Main entry points: [`Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/BenchmarkServerApplication.java`](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/BenchmarkServerApplication.java) (Spring Boot server), [`Trabalho/TCC_Stephanye.pdf`](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Trabalho/TCC_Stephanye.pdf) (Final thesis), [`Teste/Script/loadConstant/benchmark_threads.sh`](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Script/loadConstant/benchmark_threads.sh) (Constant load scripts), [`Teste/Script/loadRamping/benchmark_threads.sh`](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Script/loadRamping/benchmark_threads.sh) (Ramping load scripts)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experiments["Experiment execution"]
  node_constant["Constant load scripts"]
  node_ramping["Ramping load scripts"]
  node_vegeta["Vegeta load generator"]
end

subgraph group_server["Benchmark server"]
  node_serverapp["Spring Boot server"]
  node_traditional["Traditional threads"]
  node_virtual["Virtual threads"]
  node_gc["GC endpoint"]
end

subgraph group_results["Results and analysis"]
  node_jfr["JFR and JMC"]
  node_constantdata["Constant-load results"]
  node_rampingdata["Ramping-load results"]
end

subgraph group_research["Research materials"]
  node_thesis["Final thesis<br/>[TCC_Stephanye.pdf]"]
  node_presentation["Presentation<br/>[TCC_Stephanye.pdf]"]
  node_related["Related research"]
end

node_operator(("Experiment operator"))

node_operator -->|"runs scenario"| node_constant
node_operator -->|"runs scenario"| node_ramping
node_constant -->|"starts load"| node_vegeta
node_ramping -->|"starts load"| node_vegeta
node_vegeta -->|"sends HTTP load"| node_traditional
node_vegeta -->|"sends HTTP load"| node_virtual
node_vegeta -->|"sends HTTP load"| node_gc
node_serverapp -->|"serves endpoint"| node_traditional
node_serverapp -->|"serves endpoint"| node_virtual
node_serverapp -->|"serves endpoint"| node_gc
node_traditional -->|"returns response"| node_vegeta
node_virtual -->|"returns response"| node_vegeta
node_gc -->|"returns response"| node_vegeta
node_serverapp -.->|"records runtime"| node_jfr
node_constant -->|"produces results"| node_constantdata
node_ramping -->|"produces results"| node_rampingdata
node_constantdata -->|"informs analysis"| node_thesis
node_rampingdata -->|"informs analysis"| node_thesis
node_jfr -.->|"informs analysis"| node_thesis
node_thesis -->|"summarized in"| node_presentation

click node_constant "https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Script/loadConstant/benchmark_threads.sh"
click node_ramping "https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Script/loadRamping/benchmark_threads.sh"
click node_serverapp "https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/BenchmarkServerApplication.java"
click node_traditional "https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/controller/ThreadBenchmarkController.java"
click node_virtual "https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/controller/ThreadBenchmarkController.java"
click node_gc "https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/controller/ThreadBenchmarkController.java"
click node_constantdata "https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Script/loadConstant/Results/Dados_Load_Constant.xlsx"
click node_rampingdata "https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Script/loadRamping/Results/Dados_Load_Ramping.xlsx"
click node_thesis "https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Trabalho/TCC_Stephanye.pdf"
click node_presentation "https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Apresentacao/TCC_Stephanye.pdf"
click node_related "https://github.com/stephanyecunto/tcc_java_thread_benchmark/tree/main/Trabalhos_Relacionados"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_constant,node_ramping,node_vegeta toneBlue
class node_serverapp,node_traditional,node_virtual,node_gc toneAmber
class node_jfr,node_constantdata,node_rampingdata toneMint
class node_thesis,node_presentation,node_related toneRose
class node_operator toneIndigo
```

## Components

### Experiment execution

- [Constant load scripts](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Script/loadConstant/benchmark_threads.sh): `Teste/Script/loadConstant/benchmark_threads.sh`
- [Ramping load scripts](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Script/loadRamping/benchmark_threads.sh): `Teste/Script/loadRamping/benchmark_threads.sh`
- **Vegeta load generator**

### Benchmark server

- [Spring Boot server](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/BenchmarkServerApplication.java): `Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/BenchmarkServerApplication.java`
- [Traditional threads](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/controller/ThreadBenchmarkController.java): `Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/controller/ThreadBenchmarkController.java`
- [Virtual threads](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/controller/ThreadBenchmarkController.java): `Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/controller/ThreadBenchmarkController.java`
- [GC endpoint](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/controller/ThreadBenchmarkController.java): `Teste/Serve_Test/benchmark-server/src/main/java/com/benchmark/server/controller/ThreadBenchmarkController.java`

### Results and analysis

- **JFR and JMC**
- [Constant-load results](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Script/loadConstant/Results/Dados_Load_Constant.xlsx): `Teste/Script/loadConstant/Results/Dados_Load_Constant.xlsx`
- [Ramping-load results](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Teste/Script/loadRamping/Results/Dados_Load_Ramping.xlsx): `Teste/Script/loadRamping/Results/Dados_Load_Ramping.xlsx`

### Research materials

- [Final thesis](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Trabalho/TCC_Stephanye.pdf): `Trabalho/TCC_Stephanye.pdf`
- [Presentation](https://github.com/stephanyecunto/tcc_java_thread_benchmark/blob/main/Apresentacao/TCC_Stephanye.pdf): `Apresentacao/TCC_Stephanye.pdf`
- [Related research](https://github.com/stephanyecunto/tcc_java_thread_benchmark/tree/main/Trabalhos_Relacionados): `Trabalhos_Relacionados`

### Other components

- **Experiment operator**

## Connections

- Experiment operator → Constant load scripts: runs scenario
- Experiment operator → Ramping load scripts: runs scenario
- Constant load scripts → Vegeta load generator: starts load
- Ramping load scripts → Vegeta load generator: starts load
- Vegeta load generator → Traditional threads: sends HTTP load
- Vegeta load generator → Virtual threads: sends HTTP load
- Vegeta load generator → GC endpoint: sends HTTP load
- Spring Boot server → Traditional threads: serves endpoint
- Spring Boot server → Virtual threads: serves endpoint
- Spring Boot server → GC endpoint: serves endpoint
- Traditional threads → Vegeta load generator: returns response
- Virtual threads → Vegeta load generator: returns response
- GC endpoint → Vegeta load generator: returns response
- Spring Boot server → JFR and JMC: records runtime
- Constant load scripts → Constant-load results: produces results
- Ramping load scripts → Ramping-load results: produces results
- Constant-load results → Final thesis: informs analysis
- Ramping-load results → Final thesis: informs analysis
- JFR and JMC → Final thesis: informs analysis
- Final thesis → Presentation: summarized in
