Well, I think neither Java nor Python should be called modern anymore. Python came up in 1991 (26 years old) and Java first appeared in 1995 (22 years old). At the time, people had a completely different take on hardware and software. People then thought: "Let's build the logic the way it is easy to write and read. If the program is slow, we just have to wait for another year and it will be fast enough" (since single-core performance increased according to Moore's Law). There is no performance in the way Python or Java were conceived.
Today's languages, however, take a step back. Take a look at Go and Rust. They take the hardware into consideration again, because we suddenly have many many cores doing jobs in parallel (which is a change in the hardware architecture). So those languages were build with multithreading in mind and are a lot closer to the abstract hardware (not the real hardware) they run on.
Something like that is very possible again, because we learned from the past. We learned how to work with hardware from software in a safe and sane fashion. It's not only a phenomenon of languages, but also APIs (for example OpenGL->Vulkan) and IoT (use software instead of hardware even for very small stuff, like a temperature sensor).
Imho, in the future, we might see languages, which abstract multithreading away again, so that we can have very high-level programs without thinking about locks, mutexes and critical zones. History repeats itself :)