创建一个容量为100升的水池,在水池上设置3个出水口,A出水口每秒排出1升水,B出水口每秒排出2升水,C出水口每秒排出3升水用继承Thread类的方式设计排水口线程类Outfall,创建成员变量water表示水池剩余水量,成员变量speed表示排水口的排水速度,创建构造方法初始化线程类名称和排水速度,重写run()方法实现排水口的排水功能,要求每次排水后在控制台打印剩余的水量创建测试类PoolDemo,在main()方法中模拟这100升水被三个排水口排出的场景public class Outfall extends Thread{ //根据要求补充排水口线程类 //补充成员变量 //补充构造方法 //补充run()方法}public class TeamDemo { public static void main(String[] args) { //补充测试类代码 }}
时间: 2023-12-10 16:40:37 浏览: 116
线程池的一个demo
以下是代码实现:
```
public class Outfall extends Thread {
private int water; // 水池剩余水量
private int speed; // 排水口的排水速度
public Outfall(String name, int speed, int water) {
super(name); // 调用父类构造方法设置线程名称
this.speed = speed;
this.water = water;
}
@Override
public void run() {
while (water > 0) {
water -= speed;
if (water < 0) {
water = 0;
}
System.out.println(Thread.currentThread().getName() + "排水,剩余水量:" + water + "升");
try {
Thread.sleep(1000); // 线程休眠1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class PoolDemo {
public static void main(String[] args) {
int water = 100; // 水池剩余水量
Outfall A = new Outfall("A出水口", 1, water);
Outfall B = new Outfall("B出水口", 2, water);
Outfall C = new Outfall("C出水口", 3, water);
A.start(); // 启动线程A
B.start(); // 启动线程B
C.start(); // 启动线程C
}
}
```
程序运行后,会创建一个容量为100升的水池,并在水池上设置3个出水口,每个出水口的排水速度分别为1升/秒、2升/秒、3升/秒。程序会不断循环排水,直到水池的剩余水量为0。在每一次排水后,程序会在控制台打印剩余的水量,直到水池的水被排空。
阅读全文