I made a multithreaded Rust version of this (while learning Rust):
https://github.com/bezdomniy/rust_particles
you can run it with: cargo run --release
No input yet, just randomly initialises params each run. But it runs with 4000 particles on my machine.