Async HTTP client the right way
Thread safety

You want to have only one instance of CloseableHttpAsyncClient which is why you use static method and static variable, right ?

Sadly, using only static methods and global states is usually a bad idea (impossible to inject object... and thus you can't mock in your unit test, it also  increases the coupling between your objects)

If you still want to use static methods, the synchronized method for the HttpAsyncClient creation make it safe against thread race and you are guaranteed to have only one HttpAsyncClient instance so you have that guarantee but you should consider using Dependency Injection instead.

Code format

The indentation is good IMO, however...

private static CloseableHttpAsyncClient HTTP_ASYNC_CLIENT = null;
private static HttpPost HTTP_POST = null;
private static HttpContext HTTP_CONTEXT;

private static PropertiesLoader PROP_LOADER = new PropertiesLoader();
private static Properties PROPERTIES = PROP_LOADER.initProp("./config/config.properties");


You should only use SCREAMING_SNAKE_CASE in java when the field is static final and using the object don't have any side-effects. Here it's not only non-final, CloseableHttpAsyncClient and PropertiesLoader are full of side-effects so SCREAMING_SNAKE_CASE is better avoided.