Some operations, like email sending, are often performed in a background thread. It allows reducing the load for main threads.
Here is the MailSender interface and the MockMailSender class, which simulate mail sending.
Implement the asyncSend function by iterating through messages and sending them via sender. Use a single thread pool executor, and do not forget to shut it down.