Although parallelism is always the best solution for multithreading, there is some situation that sharing resources is not possible.
Take the #example from the Western family. Suppose that some of you want to drink a wine which value $1000. It is impossible to let everyone hold a bottle of wine for themselves which resulted that you all agree to share the wine together. Even if you hold your own glass, the wine is still needed to be shared.
In this situation, consider revalue the situation: either remove the wine or apply concurrency startegy.