1.线程状态
NEW : 分配内存地址,创建线程
RUNNABLE:(就绪/运行)调用start()之后(/没有调度CPU调度)
BLOCKED:还未拿到锁,等待、被阻塞(拿到synchronized失败状态)
WAITNG:挂起线程、wait(),需要手动唤醒
TIMED_WATING:睡眠,sleep()、join();会被自动唤醒,无需手动唤醒
TERMINATED:run方法执行完毕,线程生命周期结束
2.Lock锁和ThreadLock锁
lock锁:
1.java中的锁接口。lock锁手动实现锁,使用之前需要先获取锁,最后需要释放锁。
2.lock接口的实现允许锁在不同的作用范围内获取和释放,允许以任何顺序和获取和释放多个锁。
3.实现类ReentrantLock (重入锁:当前线程获取到锁后,尝试再次获取时可以直接拿到)和ReentrantReadWriteLock(读写锁),一般情况重入锁即可。
ThreadLock锁:
每一个线程中都拥有该对象的一个副本。