Tree hash and multithreading for parallelism
On multi-threading: Read the code.  As Paulo writes, that's up to the implementation.  Read the source code of your library and see for yourself what it is doing; it shouldn't be too hard to figure it out.