look at https://en.wikipedia.org/wiki/Comparison_of_Java_and_C%2B%2B
quoted from above link:
Java has both language and standard library support for multi-threading. The synchronized
keyword in Java provides simple and secure mutex locks to support multi-threaded applications. Java also provides robust and complex libraries for more advanced multi-threading synchronization. Only as of C++11 is there a defined memory model for multi-threading in C++, as well as library support for creating threads and for many synchronization primitives. There are also many third-party libraries for this purpose