Java编程线程和applet

时间:2016-04-08 11:17:41

标签: java multithreading applet

我正在尝试编写一个创建线程并执行两项操作的java applet程序:

  1. 在正常执行流程中打印数字
  2. 重新编写线程中的小程序
  3. 请看下面的代码

    public class Sample extends applet implements Runnable
    {
        Thread t=new Thread(this);
        int y=500;
    
        public void init()
        {
            t.start();
            for(int i=0;i<30;i++)
            {
                System.out.print(i);
                try {
                     Thread.sleep(1000);
                } catch(Exception e) {}
            }
        }
    
        public void run()
        {
            while(true)
            {
                repaint()
                if(y==100) y=500; else y-=100;
            }
        }
    
        public void paint(Graphics g)
        {
            g.fillOval(50,y,50,50);
        }
    
    }
    

    我写了这段代码,认为黑球会上下移动并同时打印数字,但是当我运行它时会打印数字,并且在打印所有数字之前球不会移动。我不明白为什么。

1 个答案:

答案 0 :(得分:0)

您可以使用.init()方法进行打印。就像我在上面的评论中所说的那样,我对AWT / Swing知之甚少,而且我对Applet类知之甚少,但也许你应该从.start()进行打印。

Javadoc说.init()被称为“告知applet它已被加载”,并且start()被称为“通知applet它应该开始运行。”

就像我在上面的评论中也说的那样。我会使用计时器来驱动动画,而不是显式创建一个线程。

我可能会使用计时器来驱动计数:我会编写一个.start()方法,只启动两个计时器并返回。