先不好意思的说下 我刚注册这个号码 第一次进这个论坛,所以……没有分哦……
要求是: 一定要有6个线程分别控制6个圆形的运动 
java编了个多线程的 但好耗CPU资源啊 为什么呀 具体改怎么解决?
还有一个问题就是怎么给上面6个圆形分别上不同的颜色呀 不会是要创建6个gOffScreen来分别上色吧? 求各位高手大侠指点迷津了import java.awt.*; 
import java.lang.Math; 
import java.applet.*; 
public class e3 extends Applet implements Runnable 

int []x=new int[6]; 
int []y=new int[6]; 
double []degree=new double[10]; 
Thread []planet=new Thread[10]; 
Image offScreenImg=null; //存放备用屏幕的内容 /*************** init() ***************/ 
public void init() 

for(int i=0;i<6;i++) 

x[i]=-1000; 
y[i]=-1000; 
planet[i]= new Thread(this); 

this.setSize(600, 600); 
} public void start() 

for(int i=0;i<6;i++) 
planet[i].start(); 

public void stop() 
{ } 
public void paint(Graphics g) 
{ } /*************** update ***************/ 
public void update(Graphics g) 

if(offScreenImg==null ) 
offScreenImg=this.createImage(600,600); 
Graphics gOffScreen = offScreenImg.getGraphics(); 
Color c = gOffScreen.getColor(); 
gOffScreen.setColor(Color.white); 
gOffScreen.fillRect(0, 0, 600, 600); 
gOffScreen.setColor(c); 
//paint(gOffScreen); 
gOffScreen.drawOval(x[0],y[0], 10, 10); 
gOffScreen.drawOval(x[1],y[1], 15, 15); 
gOffScreen.drawOval(x[2],y[2], 20, 20); 
gOffScreen.drawOval(x[3],y[3], 25, 25); 
gOffScreen.drawOval(x[4],y[4], 30, 30); 
gOffScreen.drawOval(x[5],y[5], 35, 35); 
g.drawImage(offScreenImg,0,0,null); } /*************** run() 6个小球的运动算法 ***************/ 
public void run() 

while(true) 

repaint(); 
if(Thread.currentThread()==planet[0]) 

x[0]=(int)(100*Math.cos(degree[0])+200); 
y[0]=(int)(60*Math.sin(degree[0])+200); 
degree[0]=degree[0]+(Math.PI/100); 

else if(Thread.currentThread()==planet[1]) 

x[1]=(int)(70*Math.cos(degree[1])+200); 
y[1]=(int)(50*Math.sin(degree[1])+200); 
degree[1]=degree[1]+(Math.PI/150); 

else if(Thread.currentThread()==planet[2]) 

x[2]=(int)(70*Math.cos(degree[2])+200); 
y[2]=(int)(50*Math.sin(degree[2])+200); 
degree[2]=degree[2]+(Math.PI/200); 

else if(Thread.currentThread()==planet[3]) 

x[3]=(int)(70*Math.cos(degree[3])+200); 
y[3]=(int)(50*Math.sin(degree[3])+200); 
degree[3]=degree[3]+(Math.PI/250); 

else if(Thread.currentThread()==planet[4]) 

x[4]=(int)(70*Math.cos(degree[4])+200); 
y[4]=(int)(50*Math.sin(degree[4])+200); 
degree[4]=degree[4]+(Math.PI/300); 

else if(Thread.currentThread()==planet[5]) 

x[5]=(int)(70*Math.cos(degree[5])+200); 
y[5]=(int)(50*Math.sin(degree[5])+200); 
degree[5]=degree[5]+(Math.PI/350); 

try{Thread.sleep(10);} 
catch(InterruptedException E){E.printStackTrace();}