Hello Jake,
These threads are an infrastructure resource that is expensive to create and remove so they are kept alive until the client resource is closed. The event executor is used for different jobs, such as Cluster topology refresh, and emission of metrics/event bus. A thread is not bound to a particular connection, but a connection binds to one EventLoop thread which means that one thread can be used for more than one connection.
You can reduce the number of threads either by setting a system property
(-Dio.netty.eventLoopThreads=…)
or via
ClientResources.builder().ioThreadPoolSize(…).computationThreadPoolSize(…).build()
Edit your Comment