Q1: Yes.
Q2: Naively, yes. There are a bunch of caveats and corner cases where they might not. For example, if other applications are using up all your cores, your B4J Threads may end up on the same core. But barring anything like that, the JVM will seek to run your Threads on as many cores as it can grab. You can verify this in the Performance tab of the Task Manager. Programmatically, you can access system CPU usage and JVM CPU usage with the jAWTRobot library in order to verify multi-core usage.