there is a way for limit FPS ( to somthing like 50 ~ 60 FPS) for free some CPU (example : for network thread or gc) ?
I think the only way to limit FPS is to use Thread.sleep()…
This snatch of code from Alien Flux is what I use:
if (!GL.WGL_EXT_swap_control) {
float elapsed = 0.0f;
frameTime = 0.0f;
do {
long now = Sys.getTime();
elapsed = (float)(now - then) / (float)Sys.getTimerResolution();
if (frameTime == 0.0f)
frameTime = elapsed;
if (elapsed < FRAME_TIME)
Thread.sleep(1);
} while (elapsed < FRAME_TIME);
gl.swapBuffers();
} else {
long now = Sys.getTime();
frameTime = (float)(now - then) / (float)Sys.getTimerResolution();
gl.swapBuffers();
}
If it can’t get WGL_EXT_swap_control I’ve found that doing loads of tiny sleeps is lighter on the CPU than a processor-hogging busy loop. Especially as I run at high priority.
Cas 
trying that
BTW :
FRAME_TIME , got an advise on this value ?
what is the ‘then’ variable in your code ?
/** How many frames per second we want */
public static final int DESIRED_FPS = 60;
/** The duration of one frame, in seconds */
public static final float FRAME_TIME = 1.0f / (float) DESIRED_FPS;
...
long then = Sys.getTime();
// Do drawing here
// Then cap frame rate as above here
Cas 
Thanks ! it works very well ;D
no more GC lags cause there is plenty free CPU times 
btw about GC :
java -server -Xms512m -Xmx512m -XX:NewSize=64m -XX:MaxNewSize=64m -XX:SurvivorRatio=2 -XX:+UseConcMarkSweepGC
I tryed to use new 1.4.1 GC, it’s really nice, reduce the GC lag effect
for reference: http://wireless.java.sun.com/midp/articles/garbagecollection2/#4.3