并发:是指同一个时间段内多个任务同时都在执行,并且都没有执行结束。并发任务强调在一个时间段内同时执行,而一个时间段由多个单位时间累积而成,所以说并发的多个任务在单位时间内不一定同时在执行 .也就是在同一时间段内,多个线程对同一资源的操作
简单的抢票问题(并发)
//初识并发问题
//多个线程处理一个对象
//模拟抢票问题
//问题:多个线性处理同一个资源时,线程不安全,数据紊乱
public class TextThread03 implements Runnable {
//创建火车票对象
private int ticketNums = 10;//定义10张票
@Override
public void run() {
while (true){
if(ticketNums<=0)
break;
//模拟延时
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
//获得线程名
System.out.println(Thread.currentThread().getName()+"拿到了第"+ticketNums--+"张票");
}
}
public static void main(String[] args) {
TextThread03 ticket= new TextThread03();
new Thread(ticket,"小明").start();
new Thread(ticket,"小黄").start();
new Thread(ticket,"黄牛党").start();
}
}
运行结果可以看出,程序并发执行,但存在数据紊乱问题,这个问题在后面的学习中将进行补偿