买票的例子
1. 实现Runnable接口的类
public class TestThread4 implements Runnable{
private int ticket = 10;
@Override
public void run() {
while (true){
if (ticket <= 0){
break;
}
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"-->拿到了第" + ticket-- +"张票");
}
}
}
2. mian方法(主线程)
public static void main(String[] args) {
TestThread4 testThread4 = new TestThread4();
new Thread(testThread4,"小明").start();
new Thread(testThread4,"老师").start();
new Thread(testThread4,"黄牛党").start();
}
3. 执行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201119171416673.png#pic_center)
4. 不懂的方法和运行中的问题
- Thread.sleep(200);让该线程停止200ms。
- new Thread(testThread4,“小明”); 构造方法,第一个参数传入start方法,第二个参数传入name属性。
- Thread.currentThread().getName();获取正在运行的线程的name属性。
- 运行结果中,有些票被多个线程所获取,这是线程并发问题,之后会进行讲解