多線程是Java開發中的重中之重,其重要性和難度,可見一斑。掌握並精通多線程開發,是每一個程序員的必修之課。哪怕中間的過程很痛苦,只要堅持了,並最終豁然開朗了,都是一種升華。
多線程的優化:合理利用CPU,使用多線程並行取代單線程串行,可以顯著提升系統性能。
多線程線程安全問題,本質上就是資源共享問題。如果多線程之間彼此獨立,互不影響,這種情況是不存在線程安全問題的。如果多線程之間涉及共享資源,此時處理不當,就存在線程安全問題。舉個簡單的例子:A、B、C三人各自有一塊蛋糕,他們之間不存在競爭關系,不會出現矛盾;A、B、C共享一塊蛋糕,則他們之間存在競爭關系,會出現矛盾。
那么,如何解決多線程線程安全問題呢?兩種思路:隔離資源;同步共享資源。
一、隔離資源:使用ThreadLocal隔離資源,即將共享資源備份到各自的線程單獨處理。
二、同步共享資源:既然是共享資源,就想辦法控制,在同一時刻,只有一個線程來操作共享資源。使用的技術有:使用synchronized同步關鍵字;使用reentrantlock等更加靈活的鎖工具;使用CAS無鎖思想。
本篇只是引題,后面的篇幅將會詳細講述具體的實踐案例。