java 里面对Thread的sleep的理解问题!!!急!急!在线等!!!

coralhus2 2007-06-26 02:03:53
本人是个新手,这是一个小程序,可以自动的把圆圈从小变大.先看程序吧:
import java.awt.*;
import java.applet.*;
public class app45 extends Applet implements Runnable
{ Thread t=null;
int x,y,r;
public void init()
{
x=100;
y=100;
r=10;
}
public void paint(Graphics g)
{ g.setColor(Color.white);
g.drawArc(x,y,r,r,0,360);
if(t!=null&&r<300)
{r+=10;
g.setColor(Color.pink);
g.drawArc(x,y,r,r,0,360);
if(r>300)
t.stop();
}

}
public void start()
{ if(t==null)
{ t=new Thread(this);
t.start();}
}
public void stop()
{ t.stop();
t=null;
}
public void run()
{
while(t!=null)
{try
{ Thread.sleep(800);
}
catch(InterruptedException e)
{}
repaint();  //这个地方不太明白
}
}
public void update(Graphics g)
{paint(g);}
}
这个地方不太明白:这里面有几个线程?是不是类本身app45实现runnable接口算一个,然后t也算一个呢?这就2个了???
书上说Thread.sleep(800);是为了程序的执行暂时停下来,使得CPU有时间去调用repaint()方法.线程暂停sleep是把CPU让给其他正在排队的线程呀,让给哪个线程呢?如果已经让给别的线程了,那暂停下来的线程还怎么会去执行repaint呢?
...全文
249 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fashchina 2007-06-26
  • 打赏
  • 举报
回复
up
约翰羊 2007-06-26
  • 打赏
  • 举报
回复
帮顶
timbear 2007-06-26
  • 打赏
  • 举报
回复
帮顶学习中~~
zqrqq 2007-06-26
  • 打赏
  • 举报
回复
意思是:把CPU交给处理用户输入的线程。
tdy1234 2007-06-26
  • 打赏
  • 举报
回复
sleep 就是停止当前进程800ms 让给repaint()所重绘的组件
对于本程序而言repaint()方法会调用此组件的 paint 方法。就是CPU时间交给paint()这个方法

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧