I am new to java. I am teaching myself the language. I have this bouncing ball program. When the start button is pressed the ball drops and bounces around the panel. Each time you press start a new ball is created. The problem is each new ball slows down the program. Is there a way to correct this?
Sorry if this isn't the correct place for this topic.
[ December 22, 2008: Message edited by: Lamr Jared ]
Campbell Ritchie
Sheriff
Joined: Oct 13, 2005
Posts: 32689
4
posted
0
Welcome to JavaRanch
How are you scheduling re-drawing the Balls? You are using Thread.sleep(). I think Thread.sleep(1) is a bit short; it can take more than 1 millisecond to repaint the entire GUI. Try giving a longer delay, maybe 20.
There have been problems on Windows with timings which don't divide exactly by 10. I can't remember the details, but it can cause the system clock to show incorrect times.
That sort of question is more difficult than the average beginner's question; it might be appropriate for the Swing forum or the Performance forum, but I think you might get more attention in Swing . . . moving.
So I think you have several problems with this, but the biggest is that you have every ball have its own thread.The more balls you have (quiet down kiddies ) the more threads, and the more work it is to schedule between the threads.
The better bet would be to have just a few background threads, 1 to schedule the moving and another 1 to schedule repainting. Both should be scheduled at a fixed rate, rather than using Thread.sleep, which would be a fixed delay. Take a look at Timer and TimerTask, or ScheduledExecutorService to do this.
The Ball itself would be a normal object which keeps track of its position and can handle painting itself.
Steve
Michael Dunn
Ranch Hand
Joined: Jun 09, 2003
Posts: 4632
posted
0
> So I think you have several problems with this,...
there are major problems with the whole lot: - indiscremenent use of the swing thread - getGraphics() (which is a wrist-slasher)
I appreciate all the help. I am only 6 months in working with Java. I don't know all the strengths yet. Thanks again everyone. [ December 22, 2008: Message edited by: Lamar Jared ]
I agree. Here's the link: http://ej-technologies/jprofiler - if it wasn't for jprofiler, we would need to
run our stuff on 16 servers instead of 3.
subject: New to Java. Need some proformance suggestions