CassandraServer stores the login information in a ThreadLocal<AccessLevel>.
CassandraDaemon starts the server with 64 threads. When the first 64 clients connect they should get their own thread, but after that threads will be reused.
In a quick test I created a Server with 5 threads, and a ThreadLocal<Integer>, and the value is seen by new clients connecting.
Thrift doesn't destroy the threads when a client disconnects. Maybe an option in Thrift would make more sense to make this method usable.