java Runable接口

package Test;

import org.omg.CORBA.PUBLIC_MEMBER;

//对象实现Runable接口
/*
创建类Battle,实现Runnable接口
启动的时候,首先创建一个Battle对象,然后再根据该battle对象创建一个线程对象,并启动


battle1 对象实现了Runnable接口,所以有run方法,但是直接调用run方法,并不会启动一个新的线程。
必须,借助一个线程对象的start()方法,才会启动一个新的线程。
所以,在创建Thread对象的时候,把battle1作为构造方法的参数传递进去,这个线程启动的时候,就会去执行battle1.run()方法了。

*/

public class Damo2 {
	public static void main(String[] args) {
		Hero xiangyu = new Hero();
		xiangyu.name = "项羽";
		xiangyu.hp = 616;
		xiangyu.damage = 50;
 
		Hero zhuangzhou = new Hero();
        zhuangzhou.name = "庄周";
        zhuangzhou.hp = 300;
        zhuangzhou.damage = 30;
         
        Hero diaochan = new Hero();
        diaochan.name = "貂蝉";
        diaochan.hp = 500;
        diaochan.damage = 65;
         
        Hero houyi = new Hero();
        houyi.name = "后羿";
        houyi.hp = 455;
        houyi.damage = 80;
        
        Battle battle=new Battle(xiangyu, houyi);
        new Thread(battle).start();
        Battle battle2=new Battle(diaochan, houyi);
        new Thread(battle).start();
        
        
	}
}
//设置英雄类模型
class Hero{
	public String name;
	public float hp;
	public int damage;
	
	public void attack(Hero h) {
		//为了表示攻击需要的时间,每次攻击暂停1000毫秒
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		h.hp-=damage;
		System.out.format("%s正在被攻击%s,%s的血变成了%.0f%n", name,h.name,h,name,h.hp);
		if (h.isDead()) {
			System.out.println(h.name+"嗝屁了");
		}
	}
	public boolean isDead() {
		return 0>=this.hp? true:false;
	}
}
class Battle implements Runnable{
	private Hero h1;
	private Hero h2;
	public Battle(Hero h1,Hero h2) {
		this.h1=h1;
		this.h2=h2;
	}
	public void run() {
		while(!h2.isDead()) {
			h1.attack(h2);
		}
	}
	
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值