java多线程例子-赛马

概要:

很多时候,严谨专业的长篇大论非但不能让人听懂,反而搞得头晕脑胀,而一个简洁的小例子却往往让人茅塞顿开。

| |目录

例子很简洁,只有两个类,一个是马类(Horse),一个是窗体类(GameFrame),程序入口写在了GameFrame中,每匹马都有一个独立的线程控制移动,东西不多,很容易理解。


先看一下程序结构: 
 
其中有一张动态图horse2.gif,就是奔跑的马 
 

下面上代码:


class Horse :

package com.zhenzhigu.race;
        
import java.awt.Point;
        
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
        
/**
 * 马
 * @author loopcc create 20140514
 *
 */
public class Horse extends JLabel implements Runnable {
        
    public int speed=1;//移动速度
    public Icon icon = new ImageIcon("horse2.gif");
            
    /**
     * 构造方法,指定坐标与速度
     * @param x
     * @param y
     * @param speed
     */
    public Horse(int x,int y,int speed){
        this.setBounds(x, y, 222, 222);
        this.speed=speed;
        this.setIcon(icon);
        new Thread(this).start();//新开一个线程并启动
    }
        
    //实现Runnable接口中的run方法
    //每隔33毫秒移动一次
    public void run() {
        Point p=null;
        while(true){
            try {
                p=this.getLocation();
                this.setLocation(p.x-speed, p.y);
                Thread.sleep(33);
            } catch (Exception e) {
                // TODO: handle exception
            }
        }
    }
}


class GameFrame :

package com.zhenzhigu.race;
         
import javax.swing.JFrame;
         
/**
 * 程序主窗体
 * @author loopcc
 *
 */
public class GameFrame extends JFrame {
    public GameFrame(){
        this.setLayout(null);//设置布局为null
        this.setSize(999, 650);//设置窗体大小
        this.setVisible(true);//设置窗体显示
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);//设置关闭规则
        this.setTitle("多线程Demo - 赛马 - 【真知谷科技:www.zhenzhigu.com】");
    }
             
    /**
     * 程序入口
     * @param a
     */
    public static void main(String a[]){
        GameFrame game = new GameFrame();
        game.add(new Horse(900, 50,1));//新建一匹马并添加到game窗体中
        game.add(new Horse(900, 200,3));
        game.add(new Horse(900, 350,2));
                 
    }
}


原文地址:http://www.zhenzhigu.com/read.php?tid=28&fid=6

评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
资料加载中...
已关注 , 取消