Henry, a read/write lock seems to be exactly what I am looking for, thanks!
I have an object O that establishes a connection with a server and requests are rean through that object. To not have each
thread have performance hit of initializing a connection, I am caching that object and having each thread simply call the get request (object O is thread safe to handle simultaneous get requests). My code needs to reinitialize the connection after X get requests which means when one thread is reinitializing the connection, no get requests should proceed. So, I think a read/write lock will be perfect for this.