Java Concurrent Fractal Generator

JavaMulti-threadingMonitor Pattern

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

Java Concurrent Fractal Generator
ArhitecturăShared Memory / Monitor Pattern
InfrastructurăMulti-core Systems
ContextHigh-Performance Computing (HPC)
Cod Sursă / ReferințeGitHub Repository

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 RowManager class, 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.