要求使用第二种方式实现,方便数据共享:
步骤:
- 定义买票的线程执行目标:
在成员变量定义为票数100张,卖掉一张,该数字就减去1,一直到0位置
重写run方法,完成案例
- 创建买票的线程且执行该目标的对象
- 使用该买票子线程执行对象创建多个线程任务
开启多个线程 ```java package Test21_Demo.Demo12;/*
@create 2020—12—14—16:29 */
/**
- 这是一个任务类
使用第二种方式 - 实现Runnable接口 */ public class Ticket implements Runnable{ //定义车票 private int number = 100;
//卖票逻辑 @Override public void run() {
//模拟车站不停的买票
while (true) {
//有票就卖
if (number > 0) {
System.out.println(Thread.currentThread().getName() + "正在销售第" + (number--) + "票");
} else {
//没有票了
break;
}
}
} }
```java
package Test21_Demo.Demo12;/*
@create 2020--12--14--16:25
*/
public class TicketDemo {
//多线程的设计
public static void main(String[] args) {
//创建车票的线程执行目标对象
Ticket ticket = new Ticket();
//使用该卖票的线程执行目标的对象创建多个任务
/*Thread t1 = new Thread(ticket, "Jack.Ma");
Thread t2 = new Thread(ticket, "HuaTeng.Ma");
Thread t3 = new Thread(ticket, "YanHong.Li");
//启动多个线程
t1.start();
t2.start();
t3.start();*/
new Thread(ticket,"Jack.ma").start();
new Thread(ticket,"HuaTeng.ma").start();
new Thread(ticket,"YanHong.Li").start();
}
}