如何为不同的任务使用不同的线程?

时间:2017-10-11 17:25:28

标签: java multithreading applet

这是我尝试过的。 基本上是一个横幅,显示滚动文本和闪烁图像。我没有得到输出,但似乎在这些过程中正在运行。 我的问题陈述说使用Applet和多线程创建一个Banner,其中每个线程正在执行不同的任务。 例如:一个线程正在显示滚动横幅,而另一个正在播放音乐等。

class Text extends Applet implements Runnable {
    String msg = " Marvel Electronics ";
    boolean stopFlag;
    Thread t1 = null;   
    public void init() {
        setBackground(Color.CYAN);
        setForeground(Color.BLACK);
    }
    public void start() {
        t1 = new Thread(this);
        stopFlag=false;
        t1.start();
    }
    public void run() {
        char c;
        for(;;) {
            try {
                repaint();
                Thread.sleep(300);
                c = msg.charAt(0);
                msg=msg.substring(1, msg.length());
                msg+=c;
                if(stopFlag)
                    break;
            } catch(InterruptedException e) {
                System.out.println(e);
            }
        }
    }
    public void stop() {
        stopFlag=true;
        t1 = null;
    }
    public void paint(Graphics g) {
        g.drawString(msg, 20, 30);
        showStatus("Banner");
    }
}
class Image extends Applet implements Runnable {
    Thread t2 = null;
    public void start() {
        t2 = new Thread(this);
        t2.start();
    }
    public void run() {
        for(;;) {
            try {
                repaint();
                Thread.sleep(200);
            } catch (InterruptedException e) {
                System.out.println(e);
            }
        }
    }
    public void paint(Graphics gfx) {
        gfx.setColor(Color.WHITE);
        gfx.fillRect(20, 50, 50, 50);
        gfx.setColor(Color.DARK_GRAY);
        gfx.fillOval(25, 55, 30, 30);
        gfx.drawString("ME", 35, 65);
    }
    public void stop() {
        t2 = null;
    }
}
public class Banner {
    public static void main(String args[]) {
        Text t = new Text();
        Image i = new Image();
        t.start();
        i.start();
    }
}

屏幕上没有输出,但eclipse显示正在运行的进程。请帮帮我。感谢。

1 个答案:

答案 0 :(得分:0)

您正在错误地启动小程序。你必须通过html中的applet标签或从一些awt swing Container执行它。检查一下:BaseDriverID

你可以从这开始:

public class Banner {

    public static void main(String args[]) {
        JFrame frame = new JFrame();
        frame.setSize(400, 300);

        Text t = new Text();
        Image i = new Image();
        t.start();
        i.start();

        frame.getContentPane().add(t);

        frame.setVisible(true);
        i.init();
        i.start();
        t.init();
        t.start();
    }
}

它将向您显示具有背景颜色和正在运行的文本的JFrame:

http://journals.ecs.soton.ac.uk/java/tutorial/getStarted/applet/index.html