Q:

Simple parallelization with shared non-threadsafe resource in Scala

I frequently want to parallelize a task that relies on a non-threadsafe shared resource.  Consider the following non-threadsafe class.  I want to do a map over a data: Vector[String].
class Processor { def apply: String => String }

Basically, I want to create n threads, each with an instance of Processor and a partition of the data.  Scala parallel collections have spoiled me into thinking the parallelization should be dirt simple.  However, they don't seem well suited for this problem.  Yes, I can use actors but Scala actors might become deprecated and Akka seems like overkill.
The first thing that comes to mind is to have a synchronized map Thread -> Processor and then use parallel collections, looking up my Processor in this thread-safe map.  Is there a better way?

A:

Instead of building your own synchronized map, you can use ThreadLocal. That will guarantee a unique Processor per thread.  
val processors = new ThreadLocal[Processor] {
  def initialValue() = new Processor
}

data.par.map(x => processors.get.apply(x))

