pressing keys rapidely, continously - game stucks

Hi, I have a problem with a game I am programming.
An essential part of it is to make a wheel (a loaded image) turn as fast as possible. An user can do this
by pressing the 4 arrow-keys, one-after-another.
(this is supposed to simulate the “winding” of a real wheel). After about two minutes of gaming, before that everything is fine, suddenly the sprites on screen dont
move evenly anymore, they move jerky or seem to jump. Obviously this happens because the computer
isnt able to run the gameloop smoothly anymore.
But why is that?
I suspect that java cant handle the heavy, unusual
keyboard input of my game at some point, because the
going-jerky always happens while really torturing the
arrow-keys. Of course it could also be that java has a problem with rotating my wheel image so fastly(its 276 by 277 pixels, see my implementation). However I did a test rotating the same image fastly without keyboard input and this worked fine.

So I would be grateful for any suggestions.
In my code-examples I included, hopefully, all the relevant bits.


// the wheel-image is loaded into an image object
wheel = toolkit.getImage("C:/Programme/java/j2re1.4.2_01/Rad/"wheel.gif"); 


// inside the paint method, the wheel is drawn 
//onto java2D context, I use double buffering 
//positions[0] is an AffineTransform Object 

g2.drawImage(wheel,positions[0],this);



//this is how the keyboard input is analyzed
boolean[] keysPressed = new boolean[256];

 class Tastenlauscher extends KeyAdapter
 {




              public void keyPressed(KeyEvent e)
              {
              keysPressed[e.getKeyCode()] = true;
                            }


              public void keyReleased(KeyEvent e)
              {
             keysPressed[e.getKeyCode()] = false;
               }



   }

// the following part is inside the gameloop
// here two variables are important, the 
//one, called "increaser", is connected to the 
//keyboard values:                   
                  
                  if(keysPressed[37]) 
                    increaser = 4;

                  if(keysPressed[38])
                    increaser = 3;

                  if(keysPressed[39])
                    increaser = 2;

                  if(keysPressed[40])
                    increaser = 1;


// the value of increaser is written to the 
//second variable, called "previouskey",
// but only after an if-statement has checked, if 
//the value of the current keyboardinput 
// is in an favourable way different from  the last 
//input("previouskey")
// if this is true, another variable, acceleration, is
// set to a value, if not it
// remains 0. The acceleration variable is 
//then analyzed by an algorythm (not posted here)
// and translated into the rotaion angle of 
//the Affinetransform Object positions[0]   


if    ((((previouskey == 1) && (increaser == 2)) || ((increaser == 3) && (previouskey == 2)) || ((previouskey == 3 && increaser == 4)) ||
 ((previouskey == 4 && increaser == 1))))
                      {


                              acceleration = (0.0002);




                              bremse = 0;
                              bremse0 = false;


                       }
                       else
                       {
                              bremse0 = true;

                              acceleration = 0;

                              bremse++;
                        }
 

                 vorigetaste = increaser;