Java Concurrent Fractal Generator
Concurrent application for generating fractals using multithreading, shared memory, and dynamic load balancing.

The application is built in Java to generate Mandelbrot and Julia fractals, utilizing threads to execute calculations concurrently. The solution is structured to maximize performance on shared-memory systems, overcoming the limitations of message-passing communication.
Architecture & Load Balancing
To ensure uniform loading of processor cores, the project implements a dynamic load-balancing work distribution method.
- Monitor Pattern: Access to shared variables is managed via the
RowManagerclass, which acts as a monitor to prevent race conditions. - Worker threads repeatedly request new tasks as soon as they finish calculating a row.
- This approach prevents idle times that could arise due to the non-uniform computational complexity of the fractals.
Performance
The Java implementation demonstrated consistent scalability, leveraging efficient concurrent data access. On a 100-thread configuration, the system achieved a speedup factor of 21.50 and a total execution time of only 0.1370 seconds, completely eliminating communication latency.