在Java中理解applet和runnable的第一次尝试

在Java中理解applet和runnable的第一次尝试,java,multithreading,applet,Java,Multithreading,Applet,我是Java新手。我需要帮助找出下面将要显示的一些代码。代码的要点是简单地创建一个小程序,它通过改变X位置来显示一个从左向右移动的球。我已经开始学习一个网站上的小程序教程,该网站为我提供了这段代码()。基本上,我需要有人解释以下方法及其内容:start方法(什么是线程?我知道它是一个对象,但它在这里有什么用途?)。run方法(当我将线程优先级设置为MIN/MAX时,我到底在做什么?即使没有创建这样的方法,为什么这个方法调用repaint()方法?)。最后,是绘制方法(g.Fillova线到底在做

我是Java新手。我需要帮助找出下面将要显示的一些代码。代码的要点是简单地创建一个小程序,它通过改变X位置来显示一个从左向右移动的球。我已经开始学习一个网站上的小程序教程,该网站为我提供了这段代码()。基本上,我需要有人解释以下方法及其内容:start方法(什么是线程?我知道它是一个对象,但它在这里有什么用途?)。run方法(当我将线程优先级设置为MIN/MAX时,我到底在做什么?即使没有创建这样的方法,为什么这个方法调用repaint()方法?)。最后,是绘制方法(g.Fillova线到底在做什么,如何做?)。我试过用谷歌搜索这些东西,但我很难理解我在大多数答案中看到的行话。我需要用一种更简单的方式来解释事情,以便我以后能理解术语

提前谢谢你的帮助。守则:

import java.applet.*;
import java.awt.*;

    public class MovingBall extends Applet implements Runnable
    {

       int x_pos = 10;
       int y_pos = 150;
       int radius = 20;

       public void init()
       {
          setBackground (Color.blue);
       }

       public void start()
       {
          Thread th = new Thread(this);
          th.start();
       }

       public void stop()
       {

       }

       public void destroy()
       {

       }

       public void run()
       {
          Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

          while(true)
          {
             x_pos++;

             repaint();

             try
             {
                Thread.sleep (20);
             }
             catch(InterruptedException ex)
             {

             }

             Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
          } 
       }

       public void paint (Graphics g)
       {
          g.setColor (Color.red);

          g.fillOval (x_pos - radius, y_pos - radius, 2 * radius, 2 * radius);
       }

    }

当您希望同时运行多段代码而不中断其他线程时,可以使用线程。在这种情况下,您可以使用线程重新绘制屏幕并暂停循环,而不会影响程序的其余部分

run方法正在重写传递给要运行的线程的Runnable对象。创建线程时,将向其传递一个定义了run方法的可运行对象,该方法将在线程启动时运行

这个类中没有定义repaint方法,但是它是在父类(Applet)中定义的,所以您可以在这个类中调用它


paint方法也将从Applet重写,因此您正在定义Applet在运行paint方法时将执行的操作。

所以“implements runnable”是我们正在实现并传递给run()的类?run是在这个类中预定义的方法,我们现在用这个类中定义的方法覆盖它?这对我来说是有道理的,但是runnable到底是如何被传递给run的呢?仅仅因为我们正在重写它自己的run方法?那么优先级呢?因为类实现了runnable,并且runnable有一个定义为run的方法,所以当您在类中调用run时,它会覆盖您实现的runnable。当您启动线程时,它会在您传递给它的runnable中查找run方法,并且由于您将其传递给您的类,因此它将运行您重写的run方法。线程优先级决定线程之间的cpu分配,优先级越高,它的处理能力越强,运行速度也越快。这是一个完美的解释,非常感谢。你的回答被接受了,如果可以的话,我会投你一票。谢谢。“我需要帮助弄清楚下面要显示的一些代码。”它是AWT(过时)和小程序(高级),所以忽略它,学习Java。当您了解JavaGUI时,请学习Swing或JavaFX(即使在那时,也要暂时避免使用小程序)。