20175212童皓桢 《Java程序设计》第十周学习总结
學(xué)號(hào) 2016-2017-2 《Java程序設(shè)計(jì)》第X周學(xué)習(xí)總結(jié)
教材學(xué)習(xí)內(nèi)容總結(jié)
一、Java中的線程的狀態(tài)
建的線程在它的一個(gè)完整的生命周期中通常要經(jīng)歷如下的四種狀態(tài):
1.新建: 當(dāng)一個(gè)Thread類或其子類的對(duì)象被聲明并創(chuàng)建時(shí),新生的線程對(duì)象處于新建狀態(tài)。
2.運(yùn)行 :線程必須調(diào)用start()方法(從父類繼承的方法)通知JVM,這樣JVM就會(huì)知道又有一個(gè)新一個(gè)線程排隊(duì)等候切換了。一旦輪到它來(lái)享用CPU資源時(shí),此線程的就可以脫離創(chuàng)建它的主線程獨(dú)立開始自己的生命周期了。
3.中斷:有4種原因的中斷:
JVM將CPU資源從當(dāng)前線程切換給其他線程,使本線程讓出CPU的使用權(quán)處于中斷狀態(tài)。
線程使用CPU資源期間,執(zhí)行了sleep(int millsecond)方法,使當(dāng)前線程進(jìn)入休眠狀。
線程使用CPU資源期間,執(zhí)行了wait()方法。
線程使用CPU資源期間,執(zhí)行某個(gè)操作進(jìn)入阻塞狀態(tài)。
4.死亡 :處于死亡狀態(tài)的線程不具有繼續(xù)運(yùn)行的能力。線程釋放了實(shí)體
二、 Thread類與線程的創(chuàng)建
使用Thread創(chuàng)建線程通常使用的構(gòu)造方法是:
Thread(Runnable target)
在創(chuàng)建線程對(duì)象時(shí)必須向構(gòu)造方法的參數(shù)傳遞一個(gè)實(shí)現(xiàn)Runnable接口類的實(shí)例,該實(shí)例對(duì)象稱作所創(chuàng)線程的目標(biāo)對(duì)象,當(dāng)線程調(diào)用start()方法后,一旦輪到它來(lái)享用CPU資源,目標(biāo)對(duì)象就會(huì)自動(dòng)調(diào)用接口中的run()方法(接口回調(diào))。
三、線程常用方法
1.start() : 線程調(diào)用該方法將啟動(dòng)線程,使之從新建狀態(tài)進(jìn)入就緒隊(duì)列排隊(duì),一旦輪到它來(lái)享用CPU資源時(shí),就可以脫離創(chuàng)建它的線程獨(dú)立開始自己的生命周期了。
2.run(): Thread類的run()方法與Runnable接口中的run()方法的功能和作用相同,都用來(lái)定義線程對(duì)象被調(diào)度之后所執(zhí)行的操作,都是系統(tǒng)自動(dòng)調(diào)用而用戶程序不得引用的方法。
3.sleep(int millsecond): 優(yōu)先級(jí)高的線程可以在它的run()方法中調(diào)用sleep方法來(lái)使自己放棄CPU資源,休眠一段時(shí)間。
4.isAlive(): 線程處于“新建”狀態(tài)時(shí),線程調(diào)用isAlive()方法返回false。在線程的run()方法結(jié)束之前,即沒(méi)有進(jìn)入死亡狀態(tài)之前,線程調(diào)用isAlive()方法返回true。
5.currentThread():該方法是Thread類中的類方法,可以用類名調(diào)用,該方法返回當(dāng)前正在使用CPU資源的線程。
6.interrupt() :一個(gè)占有CPU資源的線程可以讓休眠的線程調(diào)用
四、 線程同步
在處理多線程問(wèn)題時(shí),我們必須注意這樣一個(gè)問(wèn)題:當(dāng)兩個(gè)或多個(gè)線程同時(shí)訪問(wèn)同一個(gè)變量,并且一個(gè)線程需要修改這個(gè)變量。我們應(yīng)對(duì)這樣的問(wèn)題作出處理。
在處理線程同步時(shí),要做的第一件事就是要把修改數(shù)據(jù)的方法用關(guān)鍵字synchronized來(lái)修飾。
所謂線程同步就是若干個(gè)線程都需要使用一個(gè)synchronized修飾的方法。
五、 線程聯(lián)合
一個(gè)線程A在占有CPU資源期間,可以讓其它線程調(diào)用join()和本線程聯(lián)合,如:
B.join();
教材學(xué)習(xí)中的問(wèn)題和解決過(guò)程
教材學(xué)習(xí)有問(wèn)題先去https://shimo.im/doc/1i1gldfsojIFH8Ip/看看,如果別人沒(méi)有提出相同問(wèn)題,可以編輯文檔添加,然后把自己提出的問(wèn)題復(fù)制到下面:
- 問(wèn)題1:實(shí)作Runnable于run()中定義額外流程好?還是繼承Thread于run()中定義額外流程好?
- 問(wèn)題1解決方案:實(shí)作Runnable接口的好處就是較有彈性,你的類別還有機(jī)會(huì)繼承其它類別
若繼承了Thread,那該類別就是一種Thread,通常是為了直接利用Thread中定義的一些方法,才會(huì)繼承Thread來(lái)實(shí)作
如果主線程中啟動(dòng)了額外線程,預(yù)設(shè)會(huì)等待被啟動(dòng)的所有線程都執(zhí)行完run()方法才中止JVM。
如果一個(gè)Thread被標(biāo)示為Daemon線程,在所有的非Daemon線程都結(jié)束時(shí),JVM自動(dòng)就會(huì)終止。
代碼調(diào)試中的問(wèn)題和解決過(guò)程
無(wú)
代碼托管
上周考試錯(cuò)題總結(jié)
- 下列關(guān)于HashMap泛型類常用方法的介紹,正確的是
A .public boolean isEmpty()如果此映射不包含鍵-值映射關(guān)系,則返回 true。
B .public V get(Object key)返回指定鍵所映射的值;如果此映射不包含該鍵的映射關(guān)系,則拋出異常。
C .public V put(K key, V value) 在此映射中關(guān)聯(lián)指定值與指定鍵。如果該映射以前包含了一個(gè)該鍵的映射關(guān)系,則以先定義的值為準(zhǔn)。
D .public Object clone()返回此 HashMap 實(shí)例的淺表副本:并不復(fù)制鍵和值本身。
解析:查詢API。B項(xiàng):如果此映射不包含該鍵的映射關(guān)系,則返回null。C項(xiàng):如果該映射以前包含了一個(gè)該鍵的映射關(guān)系,則舊值被替換。
結(jié)對(duì)及互評(píng)
評(píng)分標(biāo)準(zhǔn)
- 不使用Markdown不加分
- 有語(yǔ)法錯(cuò)誤的不加分(鏈接打不開,表格不對(duì),列表不正確...)
- 排版混亂的不加分
- 缺少“教材學(xué)習(xí)中的問(wèn)題和解決過(guò)程”的不加分
- 缺少“代碼調(diào)試中的問(wèn)題和解決過(guò)程”的不加分
- 代碼托管不能打開的不加分
- 缺少“結(jié)對(duì)及互評(píng)”的不能打開的不加分
- 缺少“上周考試錯(cuò)題總結(jié)”的不能加分
- 缺少“進(jìn)度條”的不能加分
- 缺少“參考資料”的不能加分
教材學(xué)習(xí)中的問(wèn)題和解決過(guò)程, 一個(gè)問(wèn)題加1分
代碼調(diào)試中的問(wèn)題和解決過(guò)程, 一個(gè)問(wèn)題加1分
- 一周提交次數(shù)少于20次的不加分
- 周五前發(fā)博客的加1分
- 感想,體會(huì)不假大空的加1分
- 排版精美的加一分
- 進(jìn)度條中記錄學(xué)習(xí)時(shí)間與改進(jìn)情況的加1分
- 有動(dòng)手寫新代碼的加1分
- 課后選擇題有驗(yàn)證的加1分
- 代碼Commit Message規(guī)范的加1分
- 錯(cuò)題學(xué)習(xí)深入的加1分
- 點(diǎn)評(píng)認(rèn)真,能指出博客和代碼中的問(wèn)題的加1分
- 結(jié)對(duì)學(xué)習(xí)情況真實(shí)可信的加1分
- 有抄襲的扣至0分
- 代碼作弊的扣至0分
- 遲交作業(yè)的扣至0分
點(diǎn)評(píng)模板:
- 博客中值得學(xué)習(xí)的或問(wèn)題:
- xxx
- xxx
- ...
- 代碼中值得學(xué)習(xí)的或問(wèn)題:
- xxx
- xxx
- ...
基于評(píng)分標(biāo)準(zhǔn),我給本博客打分:XX分。得分情況如下:xxx
參考示例
點(diǎn)評(píng)過(guò)的同學(xué)博客和代碼
- 本周結(jié)對(duì)學(xué)習(xí)情況
- 結(jié)對(duì)同學(xué)學(xué)號(hào)1
- 結(jié)對(duì)照片
- 結(jié)對(duì)學(xué)習(xí)內(nèi)容
- XXXX
- XXXX
- ...
上周博客互評(píng)情況(只要鏈接,具體點(diǎn)評(píng)放相應(yīng)博客下)
- 學(xué)號(hào)1
- 學(xué)號(hào)2
- 學(xué)號(hào)3
- 學(xué)號(hào)4
- ...
其他(感悟、思考等,可選)
xxx
xxx
學(xué)習(xí)進(jìn)度條
| 目標(biāo) | 5000行 | 30篇 | 400小時(shí) | |
| 第一周 | 6/6 | 1/1 | 20/20 | |
| 第二周 | 245/251 | 1/2 | 18/38 | |
| 第三周 | 633/884 | 1/3 | 22/60 | |
| 第四周 | 305/1189 | 1/4 | 30/90 | |
| 第五周 | 410/1599 | 3/7 | 30/120 | |
| 第六周 | 1135/2734 | 3/10 | 30/150 | |
| 第七周 | 781/3515 | 3/13 | 30/180 | |
| 第八周 | 710/4225 | 3/16 | 30/210 | |
| 第九周 | 775/5000 | 2/18 | 30/240 | |
| 第十周 | 933/5933 | 1/19 | 30/270 |
嘗試一下記錄「計(jì)劃學(xué)習(xí)時(shí)間」和「實(shí)際學(xué)習(xí)時(shí)間」,到期末看看能不能改進(jìn)自己的計(jì)劃能力。這個(gè)工作學(xué)習(xí)中很重要,也很有用。
耗時(shí)估計(jì)的公式
:Y=X+X/N ,Y=X-X/N,訓(xùn)練次數(shù)多了,X、Y就接近了。
參考:軟件工程軟件的估計(jì)為什么這么難,軟件工程 估計(jì)方法
計(jì)劃學(xué)習(xí)時(shí)間:XX小時(shí)
實(shí)際學(xué)習(xí)時(shí)間:XX小時(shí)
改進(jìn)情況:
(有空多看看現(xiàn)代軟件工程 課件
軟件工程師能力自我評(píng)價(jià)表)
參考資料
Java學(xué)習(xí)筆記(第8版)
- 《Java學(xué)習(xí)筆記(第8版)》學(xué)習(xí)指導(dǎo)
...
轉(zhuǎn)載于:https://www.cnblogs.com/thz666/p/10815420.html
總結(jié)
以上是生活随笔為你收集整理的20175212童皓桢 《Java程序设计》第十周学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 丛林冒险
- 下一篇: Java实现 LeetCode 328