一.什么是多線程?
1.多線程的概念?
什么是先線程什么又是進程?
1.什么是進程:進程是計算機中關於某數據集合的一次活動,是系統進行資源分配的基本單位,是計算機結構的基礎.在早期面向進程的計算機設計結構中,進程是程序的最基本的執行實體.在當代面向線程設計的計算機結構中,進程是線程的容器,程序是指令,數據及其組織形式的集合,線程是程序的實體.總之進程可以理解為一個可以獨立運行的程序單位,進程是由一個或多個線程組成的,每一個線程就是進程中的一條執行路徑.
2.為什么要使用多線程或者說使用多線程有什么好處?
1.在一個程序的執行過程中有許多耗時的操作,如數據庫的讀寫,磁盤的IO操作等,都是非常耗時的,如果使用單線程就必須等待這些操作執行完才能去執行其他的操作,使用多線程可以將耗時操作放在后台繼續執行的同時,執行其他操作.提高效率,准確的說是提高cpu的使用率,對於單核cpu來說他並不是每個時刻都在使用,比如進行IO操作時,IO操作是比較費時的,在讀取磁盤的時候,cpu是處於等待狀態,並沒有執行任何操作,這個時候我們就可以用cpu等待的這段時間,讓他去執行別的操作,從而提高效率.
3.使用多線程有什么缺點?
1.使用多線程很消耗系統資源,因為多線程需要開辟內存,而且線程切換也是需要時間的.
2.線程的終止會對程序有影響
3.多個線程之間存在共享數據,容易出現線程死鎖的情況
4.多線程在高並發的場景中的作用?
高並發是指在程序運行中,短時間內遇到大量的用戶請求,執行大量的對資源的請求或者對數據庫的操作,高並發處理不好的話,不僅降低了用戶的體驗,還有可能造成宕機,嚴重的甚至發生oom,系統停止工作,解決高並發的問題需要從多方面進行解決如硬件,網絡,系統架構,開發語言的選取,數據結構的應用,算法優化,數據庫優化,而多線程在高並發的情況下的作用就是充分利用計算機資源,使計算機在每一時刻都能達到最大的利用率.
5.線程的創建和常用方法?
1.線程的創建
線程的創建主要有倆種方法,一.是繼承Thread類,重寫run方法,另一種就是實現Runable接口,重寫run方法.線程的啟動調用start方法.其他的還有通過匿名內部類的方法創建,實現callable接口
在java中無論使用哪種方式創建線程,本質上都是創建Thread類,另外callable是有返回值的,Thread只能單繼承
2.常用方法
currentThread();獲取當前線程
isAlive();判斷線程是否存活
join();強制運行線程其他線程無法執行
sleep();休眠不會釋放鎖
interrupt();線程中斷
setDaemon(true);線程后台執行
getPriority();獲取線程優先級
setPriotiy();設置線程優先級
yield();暫停當前線程讓當前線程處於就緒狀態不會釋放鎖
wait();等待會釋放鎖
notify();喚醒線程讓線程重新處於就緒狀態
notifyAll();喚醒所有線程
