title: Use of ThreadLocals in a ForkJoinPool
body: <p>I'm working with an external library that uses a <code>ThreadLocal</code> object to keep track of state. Is this safe for use with a work-stealing executor such as <code>ForkJoinPool</code>?</p>
  
  <p>Specifically, if a task is blocked and the work stealing algorithm picks up a new task, will that new task and the previous task end up sharing the <code>ThreadLocal</code> object, thereby corrupting it and making it unusable to record state? And if so, what's the best way to proceed, besides using a non-work-stealing executor like the old-school fixed <code>ThreadPoolExecutor</code>?</p>