多线程实现方法:
1.继承Thread类
2.实现Runnable接口
lamda表达式
线程操作:
sleep:线程休眠
yield:线程礼让
join:线程强制执行
线程的5个状态
1.新建状态(New):
2.就绪状态(Runnable):
3.运行状态(Running):
4.阻塞状态(Blocked):
5.死亡状态(Dead):
**线程的优先级:**10 5 1 getPriority()
**守护线程:**用户线程死了 守护线程也会停止
java.util.concurrent 多线程的一个jar包
同步线程:
会有异常:
1.银行取钱
2.一起抢买票
synchronized 在方法上面锁 同步锁 隐式锁,出了方法域 自动释放
synchronized(要锁的东西){锁的方法} 锁方法块
CopyOnWriteArrayList 同步锁list
死锁:2个事物想要互相的东西,导致都不让步,大家僵持在一个位置,锁死了。
lock锁:显式的锁,可以看到在哪儿开启和关闭锁 需要手动开关锁
ReentrantLock:可重复锁
ReentrantLock lock = new ReentrantLock();
try{
lock.lock();上锁
要锁的部分
}finally{
lock.unlock;解锁
}