java 多线程总结篇1之——基本概念
https://www.cnblogs.com/tison/p/8241065.html
java 多线程总结篇2之——Thread类及常用函数
https://www.cnblogs.com/tison/p/8249730.html
java 多线程总结篇3之——生命周期和线程同步
https://www.cnblogs.com/tison/p/8266718.html
java 多线程总结篇4——锁机制
https://www.cnblogs.com/tison/p/8283233.html
注:
1.join() 主要作用是同步,它可以使得线程之间的并行执行变为串行执行。在A线程中调用了B线程的join()方法时,表示只有当B线程执行完毕时,A线程才能继续执行。
2. sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
3.sleep()睡眠时,保持对象锁,仍然占有该锁;而wait()睡眠时,释放对象锁
4.线程从阻塞状态只能进入就绪状态,无法直接进入运行状态。
5.Lock和synchronized有一点非常大的不同,采用synchronized不需要用户去手动释放锁,当synchronized方法或者synchronized代码块执行完之后,系统会自动让线程释放对锁的占用;而Lock则必须要用户去手动释放锁,如果没有主动释放锁,就有可能导致出现死锁现象。