I wonder if using a ThreadLocal to store the thread's timeout value on itself rather than in a volatile global is feasible.