Don't make it multi-threading, especially if you have very little experience with it.
If you lock the entities when they are being used, will in the end create a non parallel game with a huge overhead, due to costant locking and releasing.
The goal of parallel programming is to split the processing into independent tasks, that way they can run in parallel. If you however have complex relations between entities, you'll have to pause one task and wait for another to finish. If the system is really complex you might end up just with one entity being processed at a time, which in turn equals the original system, except that you now how to take care of all the split up, locking, waiting, etc. And then you'd also have to prove that your system can't run into deadlocks or starvation problems.
If you were thinking about write rendering an updating in parallel, you'd have to make sure that all the entities have been processed correctly, otherwise you'd end up with some entities at the old and some at the new position.
And you'd thus lock everything, which will again create a sequential aplication (update() wait() render()).
If you want to write stuff in parallel, you should lear the details first, then implement the game sequentially and at the end let some tasks run in parallel to optimize.