|谁能告诉我|为什么要用线程!
我对这段代码很是不解 谁能抽点时间给我解释一下啊 不胜感激!
代码1:
class MainCanvas extends Canvas implements Runnable
{
public MainCanvas()
{
Thread t = new Thread(this);
t.start();
}
public void paint(Graphics g)
{
......//绘制
}
public void run()
{
while(true)
{
......//一些坐标的处理
repaint();
}
}
}
疑惑:1,MainCanvas类 可否不实现那个Runnable接口?
2.为什么不能改变成下面这样子.
我在构造方法MainCanvas()中
调用rep() 和 上面那代码中 用t.start()启动线程 有什么区别啊.
代码2:
class MainCanvas extends Canvas
{
public MainCanvas()
{
rep();
}
public void paint(Graphics g)
{
......//绘制
}
public void rep()
{
while(true)
{
......//一些坐标的处理
repaint();
}
}
}
------解决方案--------------------1,如果你没有实现Runnable接口,就不能做为线程的Target.这是语言上规定的
2,如果你不起动一个线程做while(true)的事情,那么,你的构造函数永远返回不了,也就是说你的程序就死在那里了
你在构造MainCanvas的时候,构造函数一运行到rep方法,就运行不下去了.因为它是一个死循环,而起一个线程
去作死循环就不要紧.因为它是另外的一个线程