Java's keyword synchronized

Hey experts,

I read the Java documentation about threads and the interface Runnable, but I kind of couldn't understand the word synchronized (when used in a function header): Does that mean that an entering thread locks mutex before entering this function so it can have sole access to it or does it mean that instructions inside the function are "synchronized" between threads (also sometimes it seemed to mean that threads can be created inside synchronized functions or something like that)

Any explanations would be really helpful
Who is Participating?
sciuriwareConnect With a Mentor Commented:
synchonised is a tag to methods and objects.
It means that provisions are (to be) made so that not 2 or more threads will try to modify
the data and/or to call the method(s) concurrently.
A thread by itself has only one "life" so you can't synchonise it.
A thread calling a synchronised method will "make sure" no other thread "is there"
and will wait until the other one is finished.

There's a lot more, but I recommend you look at the tutorial(s) on the SUN site.

mte01Author Commented:
>> A thread by itself has only one "life" so you can't synchonise it.

What does that mean??
A thread is a single phenomenon: it runs or not.
You can't tell it to wait because it is doing something itself.
From 2 threads on you can.
Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

mte01Author Commented:
Ahaa....what you mean is that with a single thread you don't have to do synchronization (yeh sure that's obvious)
mte01Author Commented:
I'll keep the question now open for like an hour for any new useful comments...
mte01Author Commented:
I guess that's it......what sciuriware said was more than enough....
One more: be aware that even a tiny program (hello world) has several threads running.
But these are started from the JVM and may be considered safe and balanced.
For you the main thread may be the only thread to account for.
Things get more complex by adding a GUI, which introduces several new threads.
Almost every week you will find some question in this forum that rises
from putting a GUI thread to work from itself.
I wrote some applications with 100's of concurrent threads; only then
things get difficult; unless you know exactly where and how those interfere.
NOT WHEN! you just can not predict WHEN events will interfere.
Therefore we try to control events by 'synchronised' methods and objects.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.