/**
* 窗口卖票经典实例,第一种继承Thread类多线程进行解决
*
*
* 需求:四个窗口同时卖票。票数100张
*
* 分析:
* 一个有100张票,卖票的动作是四个窗口所使用的,并且是同时进行的,那么就要使用多线程技术。
*
* 怎么创建线程?
* 1.继承Thread类,并且重写run方法。
* 2.将卖票的动作定义到run方法当中。
* */
package com.work.wor01;
class Ticket extends Thread{
private static int num = 100;//声明成静态变量,利用静态数据的共享性,避免卖重票
//private int num = 100;如果不声明成静态变量,那么四个窗口每个窗口都会卖100张票,导致重复卖票。
@Override
public void run() {
while(true){ //因为他要运行多少次是不确定的,具体要看cpu的调用
if(num>0){ //卖票的过程只能是正数,所以在这里放了一个判断
System.out.println(Thread.currentThread().getName()+"...sale"+num--);
}else{
break;
}
}
}
}
public class ThreadTicket {
public static void main(String[] args) {
Ticket t1 = new Ticket();
Ticket t2 = new Ticket();
Ticket t3 = new Ticket();
Ticket t4 = new Ticket();
t1.start();
t2.start(
多线程——用创建线程的两种方式分别解决经典窗口卖票问题
最新推荐文章于 2022-05-06 15:13:00 发布
本文深入探讨了Java中多线程处理经典窗口卖票问题的方法,通过两种不同的线程创建方式——继承Thread类与实现Runnable接口,详细解释了如何避免线程同步问题,确保票数的正确售卖。通过对线程同步机制如synchronized关键字和wait/notify机制的运用,确保了资源的安全访问。
摘要由CSDN通过智能技术生成