I know how multithreading works, how to use synchronized methods/blocks - but there is one thing that I can't find on web and it's not clear for me.

Let's say that we have have:

```
public class Parent {
    public Child child;

    public Parent(){
        child = new Child();
    }
}

public class Child{
    public int health;
    public int mana;

    public Child (){
        health = 100;
        mana = 100;
    }
}

```

This is obvious, that if I want to access `health` from two different threads, I need to make a getter like this:

```
public synchronized int getHealth(){return health;}

```

It's the same variable, when we touch it from two thread at once - it may break.
But what with the whole 'child' object? Can I for example make operations on mana on thread 1 and on health on thread two? In this way, I don't touch the same variable, but I'm still using 'child' on two different threads - so it may be unsafe. **Should I also synchronize while using 'child'?**

Edit - an example;
==================

```
gameloop.player_me.setX(5);
gameloop.player_me.setY(5);

```

I am changing X and Y from two threads - it's obvious that `setX` && `setY` are synchronized. But I'm also accesing other variables in `gameloop` from a third thread. Should I synchronize on `gameloop`?