title: InheritableThreadLocal value not inherited by ExecutorService threads
body: <pre><code>import java.util.concurrent.Executors
  import scala.concurrent.{ExecutionContext, Future}
  
  object TestInheritableThreadLocal {
  
    def main(args: Array[String]): Unit = {
  
      implicit val ec = ExecutionContext.fromExecutor(Executors.newFixedThreadPool(2))
  
      val tl: InheritableThreadLocal[String] = new InheritableThreadLocal[String]()
      tl.set("InitialValue")
  
      Future {
        println("111 " + Thread.currentThread() + tl.get())
        Future {
          println("222 " + Thread.currentThread() + tl.get())
        }
      }
      Thread.sleep(3000)
  
      Future {
        tl.set("NewInitialValue")
        println("333 " + Thread.currentThread() + tl.get())
        Future {
          println("444 " + Thread.currentThread() + tl.get())
        }
        Thread.sleep(3000)
      }
    }
  }
  </code></pre>
  
  <p>Output</p>
  
  <pre><code>111 Thread[pool-1-thread-1,5,main]InitialValue
  222 Thread[pool-1-thread-2,5,main]InitialValue
  333 Thread[pool-1-thread-1,5,main]NewInitialValue
  444 Thread[pool-1-thread-2,5,main]InitialValue
  </code></pre>
  
  <p>I was expecting "NewInitialValue" in the last line of output since 333 Thread spawned of Thread 444 and tl is a Inheritable thread local. </p>
  
  <p>What is causing this issue and how can it be resolved ?</p>