The JavaTM Tutorial

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form

Trail: Essential Java Classes
Lesson: Threads: Doing Two or More Tasks At Once

## Questions and Exercises: Threads

### Questions

> 1. What method in `Timer` or `TimerTask` 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 for `Timer` and `TimerTask`. Remember that these classes were introduced in version 1.3 of the Java platform.)

> 2. What is the effect of calling the `start` method on a `Thread` object?

> 3. What are the two ways you can provide the implementation for a thread’s `run` method?

### Exercises

> 1. Convert ``AnnoyingBeep.java`` so that the initial delay is 5 seconds, instead of 0.

> 2. Convert ``AnnoyingBeep.java`` to use the `scheduleAtFixedRate` method instead of `schedule` to schedule the task. Change the implementation of the `run` method so that if the `run` 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.)

> 3. Change the main program of ``TwoThreadsDemo.java`` so that it creates a third thread, named "Bora Bora". ” Compile and run the program again. Note that you will also need ``SimpleThread.java``. Does this change your vacation destiny?

> 4. Compile and run ``RaceDemo.java`` and ``SelfishRunner.java`` on your computer. Do you have a time-sliced system?

> 5. Well-behaved threads voluntarily relinquish the CPU periodically and give other threads an opportunity to run. Rewrite the ``SelfishRunner`` class to be a `PoliteRunner`. Be sure to modify the main program in ``RaceDemo.java`` to create `PoliteRunner`s instead of `SelfishRunner`s.

Check your answers.

| Start of Tutorial > Start of Trail > Start of Lesson | Search Feedback Form

Copyright 1995-2004 Sun Microsystems, Inc. All rights reserved.