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);
}
}
}
java Runable接口
最新推荐文章于 2024-02-17 10:11:50 发布