#4: Asynchronous processing: Keeping threads available - Low Level Design