Multi-threading isn't really one of OOP's strong points - too much state, mutability, and computations that rely on side effects. Purely Functional Programming lends itself to concurrency and parallelism better.
Regardless, Its still non-trivial to effectively use concurrency and parallelism to its fullest.
To be fair, its not that OOP is bullshit so much as it is hugely over-hyped and somewhat idiot friendly. Most nerds just resent all the morons in the industry (most of whom use shit like java).
You really need experience in all the major paradigms to be well rounded:
* Logic programming (Prolog)
* Purely Functional Programming (Haskell)
* OOP (java/c++ - neither are really pure OO but are useful to know. Eiffel or Smalltalk might be interesting to consider, depending what your goals are)
* Procedural (C)
* Assembly (IA32)
I'd probably avoid java/c++ from the OOP category at first. Mainly cause if you learn C and already know OOP concepts you get C++ for free. And once you know C++ its trivial to learn languages like Java or D.
Also, you want to understand the trade-offs between strongly typed languages and dynamically typed ones.
Hardest language on the list is probably Haskell, but i like it the most. Python is the easiest.
C and Assembly are essential for understanding how shit works under the hood - everything else is built on top of it. All the other languages are just to expand your ability to problem solve.
And btw the order i learned languages was: Python -> C -> IA32 Assembly -> Bash -> C++ -> VB (useless) -> Java -> D -> Haskell -> Erlang -> Prolog