本人是个新手,这是一个小程序,可以自动的把圆圈从小变大.先看程序吧:
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呢?
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呢?
解决方案 »
- 如何在命令行中运行指定的java文件
- 发个帖子希望大家说一下你遇到编成中容易被人忽视的细节、代码中隐患或者提高代码效率的问题
- 做完的程序如何才能在Java Web Start中运行?
- 十万火急,请帮忙解决乱码问题
- 如何判断 TextField 是否为空 还有 无梦 进来一下 谢谢
- 为何不能更新,菜鸟的问题
- Java中有没有类似于MessageBox的东东?想在main函数中调用,如何做
- java怎样解决数据报表的问题???
- 一个剧烈运动的问题?、
- 新手疑问!!在List集合中加入对象,使用比较器将对象内容进行排序。怎么实现不了比较器呢!
- 如何将String类型转化为Timestamp类型
- ?????????JAVA 记事本的求救?
对于本程序而言repaint()方法会调用此组件的 paint 方法。就是CPU时间交给paint()这个方法