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