# Async Request Monitoring Async programming is a programming approach that enables code to be executed concurrently, without blocking the execution of the calling thread. This non-blocking method allows your application to start a new task without pausing or waiting for ongoing tasks to end. This gives Asynchronous programming a clear edge over Synchronous programming, which is much slower in comparison, as the Synchronous method needs to wait for an ongoing task to finish before starting a new one. The Synchronous programming model also typically executes programming tasks in a specific order. On the other hand, Asynchronous programming treats its tasks as entirely independent of one another in terms of execution and initialization. As asynchronous tasks are not executed in sequential order, the server's full processing power can be utilized more efficiently. This document explains how async processing occurs and how the APM Insight agent monitors async functions. ## Supported platforms and versions Following is the list of supported platforms and their corresponding versions that support Async request tracking. Browse through the following links to learn more: | Agent Platform | Supported platform versions | |---|---| | [Java](https://www.manageengine.com/products/applications_manager/help/apm-insight-java-agent-async-request-tracking.html) | Versions 5.9 and above | | [.NET](https://www.manageengine.com/products/applications_manager/help/apm-insight-dotnet-agent-async-request-tracking.html) | Versions 6.5 and above |