Here is a simple piece of code that I have written to move a ball diagonally across the screen using a thread :
I want to extend the idea to multiple threads i.e., multiple balls moving across the screen with their starting points generated randomly. However, I am lost as to how to go about doing the same. For instance, what should the condition be in the while loop in the run method ?
Unless the balls do more complicated things, I think representing each with its own thread is overkill.
The code that I have posted is just a humble starter's attempt at creating an animation with multiple threads, I intend to work my way up with somewhat complex animation...
Here is another excuse for a code that I have written for an animation involving multiple threads.
I fail to understand the output i.e., why don't I see 2 separate balls moving ? Why is there only 1 ball visible at any given time ?
- calling repaint on a thread other than the EDT.
- forgetting the call to super.paint(g) at the start of the paint method.
- trying to stop by nulling out the variables; the threads will still continue though.
I suggest you check out javax.swing.Timer. This will trigger events regularly on the EDT itself. If this interval is small enough users will see a fluent movement.
Unnar Björnsson wrote:If you intend to use multiple threads, I'd wrap them inside a an inner class that extends Thread with it's own constructor.
Why would you extend Thread? I would, just as he is doing now, use the Runnable interface. Because of multiple reasons.