Re: A question about Java Thread
JTL.zheng wrote:
I see a code like this:
in a Thread:
--------------------------
public void run() {
Thread currentThread = Thread.currentThread();
while (thread == currentThread) {
try {
repaint();
thread.sleep(100);
}
catch (InterruptedException ex) {
}
}
}
---------------------------
what's the "while (thread == currentThread) " codes mean?
what is it used for?
There really needs to be more context to be certain. I will make a guess,
though. Apparently 'thread' is an instance variable or final method variable
from outside the Runnable that keeps track of some sort of "active" Thread
knowledge.
If you provide a short, complete example we'll know better.
One observation - the code you're reading might be flawed. It uses the expression
thread.sleep(100);
But sleep() is a static method, so it should not be called via the instance
'thread' but via the class 'Thread':
Thread.sleep(100);
The instance reference implies to some people that sleep() operates on the
specified instance; it does not, necessarily. (In this example it works
because the logic 'thread == currentThread' guarantees that 'thread' refers to
the current Thread, so the two idioms are equivalent this time, luckily.)
To make the logic clear, static methods should be called via class references,
not object references.
--
Lew