自定义一个类Ticket,使其实现Runnable接口,并在该类中创建int类型私有属性tickets,赋初值为10;在Ticket类中重写run()方法,在方法内编写一个while循环。循环体内判断ticket值,当大于0时,使用sleep(long millis)方法使线程休眠1秒钟,并打印:当前线程名称+“正在出售第”+循环次数;否则结束循环。每执行一次while循环,tickets值减1;编写测试类Example02,在Example04类的main()方法中,创建一个Ticket对象,利用Thread的构造方法创建三个线程对象并命名,并开启三个线程的start()方法。
时间: 2023-12-10 16:38:41 浏览: 87
Ticket类代码如下:
```java
public class Ticket implements Runnable {
private int tickets = 10;
@Override
public void run() {
int count = 0;
while (tickets > 0) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + "正在出售第" + (++count) + "张票");
tickets--;
}
}
}
```
Example02类代码如下:
```java
public class Example02 {
public static void main(String[] args) {
Ticket ticket = new Ticket();
Thread thread1 = new Thread(ticket, "窗口1");
Thread thread2 = new Thread(ticket, "窗口2");
Thread thread3 = new Thread(ticket, "窗口3");
thread1.start();
thread2.start();
thread3.start();
}
}
```
运行Example02类的main()方法,将会输出如下内容:
```
窗口3正在出售第1张票
窗口1正在出售第1张票
窗口2正在出售第1张票
窗口1正在出售第2张票
窗口3正在出售第2张票
窗口2正在出售第2张票
窗口3正在出售第3张票
窗口2正在出售第3张票
窗口1正在出售第3张票
窗口3正在出售第4张票
窗口2正在出售第4张票
窗口1正在出售第4张票
窗口2正在出售第5张票
窗口1正在出售第5张票
窗口3正在出售第5张票
窗口1正在出售第6张票
窗口2正在出售第6张票
窗口3正在出售第6张票
窗口2正在出售第7张票
窗口1正在出售第7张票
窗口3正在出售第7张票
窗口1正在出售第8张票
窗口2正在出售第8张票
窗口3正在出售第8张票
窗口1正在出售第9张票
窗口3正在出售第9张票
窗口2正在出售第9张票
窗口1正在出售第10张票
窗口3正在出售第10张票
窗口2正在出售第10张票
```
阅读全文