What exactly is a "thread" in thread_cache_size, Thread_connected and thread_created?
On *nix, a MySQL thread is a relatively heavy-weight "process".  You can see the "processes" in top or ps.

For Windows, thread_cache_size = 0 is OK.  This is because threading is done differently.

On *nix, thread_cache_size should be a modest number, say, 20.  It is the maximum number of unused processes to keep open.  Suppose you have a burst of activity and briefly peak at 30 threads running (Threads_connected), but then 7 disconnect.  That leaves 23 connected, plus the cache of 7 "processes" not yet terminated (Threads_cached).  Let's say another 18 disconnect.  You are down to 5 running and 20 (the cache size) held in reserve.

A "thread_pool" is something different.  Furthermore, Oracle and MariaDB implemented different things here.

The STATUS values of Threads_cached/connected/created/running give a peak into whether the VARIABLE thread_cache_size needs tuning. 

Threads_created/Uptime is how fast a new process is being created because the cache is too small.  Recommend keeping this under 3/second.