Can I use Unreal 4 for this task?

You don’t have to replace the ue4 physics system, just ignore it (make all your actors unaffected by the ue physics) and use physics bodies from your own physics engine, keep references in your custom actora and update transforms of the actors based on them. It’s like in the old days when you were playing with a graphics library directly and integrated a separate physics engine. Use a fixed time step update function, ue4’s onTick function won’t cut it, to update the simulation for the most realistic effect. About multithreading, i’m not familiar with how ue4 does it, but if it’s not easy to use and if you have a fixed system (desktop) you’re going to run your simulations on, you might want to test if c++11 threads are available or integrate a third party threading library (boost, posix,…) to run your physics engine only.