...but they're a necessary evil

Multiple threads are required to make use of multiple processor cores

Inter-thread communication is much cheaper than inter-process