- 实现Runnable接口
- 重写run方法 将要执行的操作卸载run方法中
- 创建实现Runnable接口的类对象
- 创建Thread对象 将Runnable接口对象作为构造参数传递给Thread
- 使用Thread对象调用start方法
- 存在线程安全问题 ```java
/**
- 创建人:LYY
- 创建时间:2022/4/26
- 模拟售票
- 同100张车票 同时多个线程抢票
- 每个线程执行一次 当前票数减一 */
// 1. 实现Runnable接口 public class Ticket implements Runnable{
private int count = 100;
@Override
public void run() {
// 2. 将要执行的操作 卸载run方法中
while (count > 0) {
System.out.println(Thread.currentThread().getName()+ "count = "+count);
count--;
}
}
}
class TicketTest{
@Test
public void ticketTest() {
// 3. 创建Runnable接口实现类的对象
Ticket ticket = new Ticket();
// 4. 将Runnable接口实现类的对象作为参数 传递给Thread对象 创建线程
// 创建线程1
Thread t1 = new Thread(ticket);
t1.setName("线程一:");
// 创建线程2
Thread t2 = new Thread(ticket);
t2.setName("线程二:");
// 创建线程3
Thread t3 = new Thread(ticket);
t3.setName("线程三:");
t3.start();
t1.start();
t2.start();
}
} ```