Is it safe to call setactorlocation from a thread other than game thread
By default - No it isn’t.
However you may tackle with the Actors inner code and add mutexes there to allow a thread safety.
The best way to do it would be actually to Spawn a Task (on a game thread) where you can set the actor location. And even better is to batch all the Actors and All the locations and set them all in 1 single Task → the set code will ofcourse be on a game thread but all your calculations can be done on worker thread which probably can slightly or even more than slightly improve your performance.