Doesn't Scala use Java's core libraries which brings all the threading
and locking issues from Java to Scala?
Well, yes, and if you do locking in Scala you'll face the same issues. The point, however, is that you are not supposed to, as Scala provides you with abstractions that handle this problem in a safer manner.
Now, Scala does two things that really helps. One of them is the actor model, which can be thought of as a concurrency pattern, provided by Scala as a library. If you are a Java programmer, I suggest you go to Akka site and look at their Java stuff. This is the library that will replace Scala's current actor library, and you can use it from Java.
The second thing that Scala does that helps is using immutable data structures. There's nothing preventing Java from using immutable data structures --
String, for one, is itself immutable! Immutable data structures do not suffer from concurrency problems since threads can't change them.
There are other things that add to these, to make up full solutions, such as agents and stm (both available from Akka), or latches (from Java).
Now, the two things above can be done in Java, as I said myself. You can use Akka in Java, and you can write immutable data structures in Java (or use from libraries that provide them). However, Java makes it a pain to use this stuff, because it supports neither higher order types, nor closures and first-class functions.
So, while you can do it, programmers usually won't because, in Java, writing such code is very verbose (I mean, much more so than the standard for Java).