There is no right answer. Depends on many things. And you need to choose yourself.
"CASE 1: faster, but wastes a lot of memory
"CASE 2: slower but uses low memory"
Wrong. Depends on many things. Creating threads is not so expensive (this is, but not so much), but if there are too many threads, you will have a problem.
It depends a lot on the load - what is the expected load? If so, let's say about 1000 requests per second - you know, if you create 1000 threads every second ..... this will be a disaster: D
Also - create as many threads as the processor can process without switching between them. There’s a big chance (depending on your program, of course), a single-core processor works a lot, much slower with 10 threads instead of 1 (or 2). It really depends on what these threads will do.
I would choose to create a thread pool and reuse threads.
source share