I'm also going to suggest learning one of the languages you "already know" really well and then possibly working on learning about architecture or design, etc. Moving your skill set from one language to another is generally pretty trivial within the same paradigm, so the focus should really be on improving vertically, not just knowing how to write 'hello world' in 50 languages (as an example).
Having said that, a paradigm switch (ex to a functional-based or possibly procedural-only language) could be beneficial if you REALLY wanted to learn a new language.
As for focusing on a particular language for learning purposes, I would actually suggest C++. Java is kind of "meh" in my own personal opinion--C# would be a better alternative to that. C++'s is frequently railed for its difficulty, in particular because you have to be mindful of things that 'easy to use' languages like C# and Java hide away from the user. This is what makes it valuable to someone who's interested in learning versus 'getting something done, fast'.
The biggest, most common example of this would have to be the necessary attention to ownership and lifetime for heap allocations. A language like C# will allow a programmer to ignore the issue of ownership in lieu of more progressive tasks, but by the same token, the programmer will know nothing about ownership when he/she enters into a threaded environment and will, thus, suffer greatly because of it. This is one of many examples.
But I would put more importance on picking a language and learning it (along with more broad, language-agnostic topics) well over which particular language you choose, and would suggest doing that many times over just scratching the surface of yet another language.