1、什么是并发,什么又是并行
关于并发并行的概述很多,这边推荐一篇比较易懂的
如何给女朋友解释什么是并发和并行
2、并发问题
多个线程抢占同一个资源导致的一些问题,比如抢票
package com.example.service;
/**
* 多个线程同时操作一个对象
* 买火车票的例子
*/
public class Thread4 implements Runnable{
private int ticketNum = 10;
@Override
public void run() {
while (true){
if (ticketNum<=0){
break;
}
// 模拟延迟
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"------》拿到了第"+ticketNum--+"票");
}
}
public static void main(String[] args) {
Thread4 ticket = new Thread4();
new Thread(ticket,"小明").start();
new Thread(ticket,"老师").start();
new Thread(ticket,"黄牛").start();
}
}
多次执行结果:
多个线程操作同一个资源的情况下,线程不安全,数据紊乱,这就是并发问题