Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
- Question: What method in
Timer
orTimerTask
can you use to determine when the task was most recently scheduled to execute? (Hint: You can find the answer by looking at the API documentation forTimer
andTimerTask
. Remember that these classes were introduced in version 1.3 of the Java platform.)Answer: The
TimerTask
scheduledExecutionTime
method.
- Question: What is the effect of calling the
start
method on aThread
object?Answer: The thread goes into the Runnable state and the
run
method is invoked.
- Question: What are the two ways you can provide the implementation for a thread's
run
method?Answer:
- Create a
Thread
subclass that overrides therun
method.- Write a class that implements the
Runnable
interface and therun
method.
- Exercise: Convert
so that the initial delay is 5 seconds, instead of 0.
AnnoyingBeep.java
Solution: Change the initial delay argument to the
schedule
method from 0 to 5*1000.
- Exercise: Convert
to use the
AnnoyingBeep.java
scheduleAtFixedRate
method instead ofschedule
to schedule the task. Change the implementation of therun
method so that if therun
method is called too late for a warning beep (say, more than 5 milliseconds after it was scheduled to run), nothing happens--no beep and string are generated. (Hint: Remember your answer to question 1.)Solution: Substitute
scheduleAtFixedRate
forschedule
. You can useSystem.currentTimeMillis()
to get the current time to compare with the scheduled execution time. A full solution is in.
SkippingBeep.java
- Exercise: Change the main program of
so that it creates a third thread, named "Bora Bora." Compile and run the program again. Note that you will also need
TwoThreadsTest.java
. Does this change your vacation destiny?
SimpleThread.java
Solution: Add the following line to the
main
method:new SimpleThread("Bora Bora").start();- Exercise: Compile and run
and
RaceTest.java
on your computer. Do you have a time-sliced system?
SelfishRunner.java
Solution: The answer depends on your system. As of JDK 1.0, the Java VM on Microsoft Windows (includes Windows 95/98/NT/2000) uses time slicing while the Java VM on Solaris does not.
- Exercise: Well-behaved threads voluntarily relinquish the CPU periodically and give other threads an opportunity to run. Rewrite the
class to be a
SelfishRunner
PoliteRunner
. Be sure to modify the main program into create
RaceTest.java
PoliteRunner
s instead ofSelfishRunner
s.Solution: Add a call to the
yield
method somewhere within therun
method, such as just after the call toprintln
.
Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
Copyright 1995-2005 Sun Microsystems, Inc. All rights reserved.