This is part of "Thread Pooling."
It basically means "Never dies." Always available as in a pre-allocated
pool of "Worker Threads" waiting to do work for you. But they never die,
they are put to sleep when not busy and awaken when they are needed.
They only terminate with the POOL itself end, de-allocated, closed or exits.
Imagine you have connection system (lots of users connecting to you,
lots of mail being sent to you, etc), and you want to have 10 workers
always available to handle the connections. Like a valet parking, and
you got 10 dudes always ready to park the incoming cars.
You might also prepare a small "growth" of threads, maybe 2-3 so that
when all 10 threads are busy (all the dudes are parking cars), you can
start the 11, 12, etc. You can call the 10 workers persistent because
they are always available.
So on busy days with too many cars coming in (overloaded with internet
connections), you might have 2-3 part time valet dudes on call ready to
come in on a moment notice.
The full time dudes are PERSISTENT - because they are always there. The
others are not persistent, because the boss will tell them to go home
(thread dies) when they are not needed any more.
Some worker designs don't create the threads at all until they are
needed. But that can be inefficient if you know that you will have a
certain amount of persistent (constant) load. When the data comes in,
all you need do to is PASS the data to the already running threads that
are not currently busy.