When writing a game loop from scratch in java for an android game applications, it is very common in many tutorials I have read that the keyword synchronized is used to synchronize update and rendering methods of the SurfaceHolder of the SurfaceView that manages the game objects.
I understand the basics of synchronization and the importance of synchronizing i.e. a method which should be called n times, and is called inside multiple threads. But what I want to know is if the synchronization block, that synchronizes around a SurfaceHolder, and contains the SurfaceHolder's draw (rendering) and update methods, needs the synchronization if the plan is to ONLY call the update and draw methods inside one single thread (the game loop).
To conclude, the main concerns I have are:
1) Can the draw method inside the SurfaceView class be called by some inherrited, or just hidden method that I'm not aware of, so that I always have to synchronize the method?
2) Is there any reason to NOT use the synchronization if it's not needed; i.e., is the functionality computationally heavy?
Please let me know if anything in my question is unclear :)