多線程

GTL9_Y2B`KWALL0T_A{D.png

5TXF8I)LHDXF}P)7MG2UJYW.png
- 今天學(xué)習(xí)了線程,也了解到了進程。先說進程,進程是一個具有獨立功能的程序關(guān)于某個數(shù)據(jù)集合的一次運行活動,它可以申請和擁有系統(tǒng)資源,是一個動態(tài)的概念,是一個活動的實體。而線程是在進程中執(zhí)行的一個任務(wù),一個進程可以包含多個線程,線程可以共享進程中的資源,線程可以被稱為輕量級進程。我們把進程作為分配資源的基本單位,把線程作為獨立運行和獨立調(diào)度的基本單位。
接著學(xué)習(xí)了synchronized(同步),當(dāng)對某一個代碼塊使用時,一次只有一個線程可以進改代碼塊,當(dāng)線程執(zhí)行完并釋放解鎖后,下一個線程才能進入。當(dāng)在方法聲明時使用,表示一次只能有一個線程該方法,其它線程想調(diào)用該方法則必須排隊等待,當(dāng)前線程執(zhí)行完方法后,下一個線程才能進入。當(dāng)synchronized所包的范圍越大,則運行的時間則會增長。
在多線程中,除了Thread方法的使用,還用到了Object中的wait():導(dǎo)致當(dāng)前線程等待,直到其他線程調(diào)用notify()和notifyAll(),notify():喚醒正在等待此對象的監(jiān)視器上的單個線程,notifyAll():喚醒正在等待此對象的監(jiān)視器上的多個線程。
最后是死鎖,即兩個或兩個以上的進程在執(zhí)行過程中,由于競爭資源或者由于彼此通信而造成的一種阻塞的現(xiàn)象。