Thread-per-connection approach