一、并发与并行
并发:两个或多个事件在同一时间间隔内执行
并行:两个或多个事件在同一时刻执行
并行可能会造成:同一个对象,多个线程同时操作
解决:利用线程同步
一文解释同步异步、阻塞非阻塞:https://blog.csdn.net/m0_37806112/article/details/81910410
二、线程同步
一种等待机制
1. 锁机制
同一进城的多个线程共享一块存储空间,会出现访问冲突。
(1) 排它锁
当一个线程获得排它锁时,独占资源,其他线程必须等待。
2. synchronized关键字
(1) synchronized方法
(2) synchronized块
3. 死锁与活锁
死锁:
a要b资源,b要a资源。两个都被阻塞。
活锁:
a请求资源t并拿走,b请求t失败,c请求t拿走,b请求t失败,d请求t拿走。。。b一直请求失败,造成活锁。
死锁解决:
避免同一同步块中持有两个锁