原因:看了狂神的課,感覺不會(huì)的挺多的,這里速度補(bǔ)一下那個(gè)網(wǎng)絡(luò)編程和多線程
網(wǎng)絡(luò)編程:
開始了:
1.結(jié)束了,這個(gè)相關(guān)性并不是很大,而且講的很多都是計(jì)算機(jī)網(wǎng)絡(luò)的知識(shí)。這個(gè)在很多地方都看到過,雖然不是很精通,但還是有寫了解的。
我是通過這個(gè)博客了解的:https://blog.csdn.net/allenfoxxxxx/article/details/90707505
多線程:
1.看了這個(gè)多線程的目錄 之后,感覺其實(shí)和我今天上午上python課的多線程一樣的案例,就是:線程的簡(jiǎn)介,然后線程的實(shí)現(xiàn)也就是線程的創(chuàng)建,就下來講線程的狀態(tài)和他的同步和通信。
2.開始繼續(xù)看了。開始看了第一個(gè),感覺還是有些要敲代碼的,但是感覺有點(diǎn)慢,試著快一點(diǎn)
3.學(xué)會(huì)了run和start的區(qū)別,更加的深刻了。run是下先執(zhí)行完之后再執(zhí)行主方法的,start是直接和主方法同時(shí)執(zhí)行的。
4.學(xué)了那個(gè)Theard和Runnable的開啟多線程的區(qū)別,Thread類是繼承后可以直接run和start的,Runnables是接口,繼承重寫后可以run不過想start只能通過創(chuàng)建線程對(duì)象,通過代理實(shí)現(xiàn)。優(yōu)點(diǎn)是可以多繼承
5.中斷了一會(huì)兒時(shí)間,現(xiàn)在繼續(xù)看。中間很多同學(xué)來了,然后有點(diǎn)拖延了。而且還有一個(gè)就是有同學(xué)說狂神的這個(gè)講的不深,但是也入了門。加油繼續(xù)看吧。
6.講了一個(gè)新的方法,這邊說了解一下。callable方法,并且這個(gè)有四個(gè)步驟,比較麻煩,好處在于可以定義返回值,可以拋出異常。(這個(gè)沒有實(shí)現(xiàn),因?yàn)樗@個(gè)并沒有講清楚,埋個(gè)點(diǎn))
7.靜態(tài)代理,真實(shí)對(duì)象和代理對(duì)象都要實(shí)現(xiàn)同一個(gè)接口;代理對(duì)象要代理真實(shí)真實(shí)角色。
好處在于:代理對(duì)象可以很多真實(shí)對(duì)象做不了的事情,真實(shí)對(duì)象可以做自己的事情
8.lambda表達(dá)式,并且熟悉了局部?jī)?nèi)部函數(shù),匿名內(nèi)部類,接口,外部函數(shù)。這個(gè)使用接口的前提是函數(shù)式接口,參數(shù)可以去除參數(shù)類型,而且lambda里面可以接幾個(gè)參數(shù)
新的一天,繼續(xù)
1.Sleep可以模擬網(wǎng)絡(luò)延時(shí)和倒計(jì)時(shí)等,每一個(gè)對(duì)象多有一個(gè)鎖,sleep是不會(huì)釋放鎖的。
2.線程禮讓,Yield讓當(dāng)前執(zhí)行的線程暫停,不會(huì)阻塞,講運(yùn)行狀態(tài)轉(zhuǎn)為就緒狀態(tài);讓cpu重新調(diào)度,可能成功可能不成功,看cpu心情。
3.線程插隊(duì),這個(gè)是用join,Join合并線程,待此線程完成后,在執(zhí)行其他的線程,其他的線程阻塞。但是狂神的例子并不好,而且沒有完全等待,是交替執(zhí)行。看了其他的博客,發(fā)現(xiàn)這個(gè)并不是這么用的,插隊(duì)的說法還是有失偏頗。
4.線程的狀態(tài),這個(gè)是講了一個(gè)線程自帶的方法檢測(cè),給延時(shí)了1秒鐘可以看到阻塞狀態(tài),所以順序就是:創(chuàng)建,就緒,阻塞,運(yùn)行,死亡。
5.線程的優(yōu)先級(jí),方法getPriority,setPriority,1到10,主線程的最高,優(yōu)先級(jí)高就先執(zhí)行,建議優(yōu)先級(jí)設(shè)置放在start前,也有小幾率優(yōu)先級(jí)低的先執(zhí)行
5.守護(hù)線程,分為用戶線程和守護(hù)線程,虛擬機(jī)確保用戶線程執(zhí)行完畢,不用等守護(hù)線程執(zhí)行完畢,用于后臺(tái)記錄操作日志和監(jiān)控內(nèi)存和垃圾回收這些輔導(dǎo)型工具。
開啟新的一天
今天開始繼續(xù)學(xué)習(xí)了,然后就是繼續(xù)看多線程了
1.昨天后面看了線程同步機(jī)制和三大不安全用例,通過加鎖可以使他們同步。
2.死鎖,就是相互拿著別人需要的東西,用static保證資源只有一份,這個(gè)還有他們的四個(gè)產(chǎn)生條件,這個(gè)老師之前上課也講過。
3.Lock,也是鎖和synchronize的區(qū)別分別是在于loke鎖是顯示鎖,需要手動(dòng)開關(guān)鎖,synchronazed不需要,是隱式鎖,loke只能鎖代碼塊,放在try里面, synchronize可以鎖代碼塊和方法,LOck性能更加的好
4.消費(fèi)者和生產(chǎn)者模型,解決的方法,第一個(gè),管程法,就是設(shè)置一個(gè)緩存區(qū),一個(gè)好了通知另外一個(gè)。信號(hào)燈大,是通過標(biāo)志位解決
5.接下來就是講了線城池,就是創(chuàng)建一個(gè)小池子,然后把一些線程放進(jìn)去接任務(wù),之后就是可以直接取用。
6,之后總結(jié)的話有學(xué)習(xí)了使用callable接口,可以定義返回值和拋出異常,這個(gè)可以是Thread和Runable所沒有的,這個(gè)就是復(fù)雜了一點(diǎn)
7,完結(jié),撒花?。。?/p>