A synchronized method requires that the executing thread obtain the lock. A non-synchronized method does not require a lock to be obtained. So you are correct: Non-synchronized methods can be accessed while another thread has the lock.
There are 2 types of locks: An object lock (one for each instance) and a class lock. The class lock is needed for accessing synchronized static code. So if you have 2 instances of the same class, then there are 2 distinct object locks, but there is only 1 class lock. Which lock is required depends on whether the synchronized code is static or not.
"We're kind of on the level of crossword puzzle writers... And no one ever goes to them and gives them an award." ~Joe Strummer sscce.org