Kotlin 標(biāo)準(zhǔn)庫(kù)為幾種有用的委托提供了工廠方法。 延遲屬性(lazy properties): 其值只在首次訪(fǎng)問(wèn)時(shí)計(jì)算画髓; 可觀察屬性(observable propert...
![240](https://upload.jianshu.io/users/upload_avatars/1822938/670f8076-ca52-460f-8a94-b42be433b7f7.jpg?imageMogr2/auto-orient/strip|imageView2/1/w/240/h/240)
Kotlin 標(biāo)準(zhǔn)庫(kù)為幾種有用的委托提供了工廠方法。 延遲屬性(lazy properties): 其值只在首次訪(fǎng)問(wèn)時(shí)計(jì)算画髓; 可觀察屬性(observable propert...
基礎(chǔ)知識(shí) 并發(fā)編程引發(fā)的問(wèn)題 并發(fā)編程需要關(guān)注兩個(gè)問(wèn)題. 線(xiàn)程之間是如何通信的? 線(xiàn)程之間是如何同步數(shù)據(jù)的? 在現(xiàn)有的通信機(jī)制中, 有兩大類(lèi). 共享內(nèi)存 和 消息傳遞. 進(jìn)程...
什么是線(xiàn)程 線(xiàn)程(thread) 是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。它被包含在進(jìn)程之中坎穿,是進(jìn)程中的實(shí)際運(yùn)作單位尼斧。一條線(xiàn)程指的是進(jìn)程中一個(gè)單一順序的控制流霜旧,一個(gè)進(jìn)程中可以并...
進(jìn)程與線(xiàn)程 什么是進(jìn)程 進(jìn)程(Process) 是計(jì)算機(jī)中的程序關(guān)于某數(shù)據(jù)集合上的一次運(yùn)行活動(dòng)冯吓,是系統(tǒng)進(jìn)行資源分配和調(diào)度的基本單位,是操作系統(tǒng)結(jié)構(gòu)的基礎(chǔ)令漂。 在當(dāng)代面向線(xiàn)程設(shè)計(jì)...
有點(diǎn)問(wèn)題啊.
在下載是,斷網(wǎng)了3次,就不能下載了,一直在onWait方法里
當(dāng)出現(xiàn)網(wǎng)絡(luò)錯(cuò)誤超過(guò)3次,超過(guò)了線(xiàn)程池的核心任務(wù)數(shù)之后,就會(huì)出現(xiàn)一直出現(xiàn)onWait,不會(huì)繼續(xù)下載了
原因是因?yàn)樵贔ileTask里,循環(huán)沒(méi)有退出,
while (tempChildTaskCount < childTaskCount) {
//由于每個(gè)文件采用多個(gè)異步操作進(jìn)行膝昆,發(fā)起多個(gè)異步操作后該線(xiàn)程已經(jīng)結(jié)束,但對(duì)應(yīng)文件并未下載完成叠必,
//則會(huì)出現(xiàn)線(xiàn)程池中同時(shí)下載的文件數(shù)量超過(guò)設(shè)定的核心線(xiàn)程數(shù)荚孵,所以考慮只有當(dāng)前線(xiàn)程的所有異步任務(wù)結(jié)束后,
//才能使結(jié)束當(dāng)前線(xiàn)程挠唆。
}
這里沒(méi)跳出去,線(xiàn)程一直結(jié)束不了.
應(yīng)該在startSaveRangeFile方法里,將
...
} finally {
Utils.close(saveRandomAccessFile);
Utils.close(saveChannel);
Utils.close(inputStream);
Utils.close(tempRandomAccessFile);
Utils.close(tempChannel);
Utils.close(response);
addCount(); //放在這里計(jì)數(shù).
}
將addCount放在finally里面計(jì)數(shù)
而且,將tempChildTaskCount用volatile修飾.
光加同步鎖還是會(huì)出現(xiàn)tempChildTaskCount沒(méi)有被更新的情況,導(dǎo)致循環(huán)跳不出.
追了幾天,終于解決了這個(gè)bug
枚舉類(lèi)實(shí)現(xiàn)Parcelable的寫(xiě)法如下: 當(dāng)枚舉類(lèi)為一個(gè)類(lèi)的成員變量处窥,并且該類(lèi)也要實(shí)現(xiàn)Parcelable接口時(shí),則先讓枚舉類(lèi)實(shí)現(xiàn)Parcelable接口玄组,
——徐宏亮 原創(chuàng) 江湖人稱(chēng)北喬峰滔驾, 盛名之下無(wú)虛士; 降虎擒龍?zhí)嫒?天下英雄莫能擋俄讹。 明知虎穴吾偏往哆致, 單刀赴宴會(huì)群英; 男兒重義輕生死患膛, 血濺當(dāng)場(chǎng)何所懼摊阀? 今日飲酒斷恩...
刷抖音的時(shí)候,無(wú)意間刷到 心形函數(shù)的動(dòng)畫(huà),覺(jué)得很有意思, 就簡(jiǎn)單的用Android的方式實(shí)現(xiàn)了一下. 心形函數(shù)公式 公式 : X的取值范圍:[-1.81,1.81],該取值范...
代理模式 使用代理模式創(chuàng)建代理對(duì)象,讓代理對(duì)象來(lái)控制對(duì)某個(gè)對(duì)象的訪(fǎng)問(wèn), 被代理對(duì)象可以是遠(yuǎn)程對(duì)象,創(chuàng)建開(kāi)銷(xiāo)大的對(duì)象或者需要安全控制的對(duì)象等. Proxy 稱(chēng)為代理對(duì)象.Rea...
什么是反射 Reflection is a feature in the Java programming language. It allows an executing ...
Demo的源碼地址在 mini-butterknife, 有興趣的可以下載源碼來(lái)看. Butterknife 框架介紹 butterknife是一款View注入的框架,在an...
一, 函數(shù)管理 提供了一組方法发钝,來(lái)實(shí)現(xiàn)C++方法被調(diào)用 和 去調(diào)用js方法的功能 1.調(diào)用JavaScript方法 example 2.創(chuàng)建JavaScript方法 該函數(shù)創(chuàng)...
Android 中 Message的應(yīng)用 Message 在Android中主要是在 消息循環(huán)機(jī)制 中使用,即配合 Handler,Looper和MessageQueue來(lái)進(jìn)...
Demo的源碼地址在 mini-rxjava, 有興趣的可以下載源碼來(lái)看. 從觀察者模式說(shuō)起 觀察者模式,是我們?cè)谄綍r(shí)使用的比較多的一種設(shè)計(jì)模式.觀察者模式定義了一種一對(duì)多的...
Android中位域的應(yīng)用 在Android中,我們會(huì)經(jīng)常用到或者看到以下這樣的代碼 : 通過(guò)一個(gè) int字段,來(lái)添加多個(gè) 標(biāo)志或者狀態(tài). 一個(gè)int字段,能夠管理多個(gè)標(biāo)記(...
頭文件 #include<future> 顿涣,在Linux下需要添加 -lpthread 參數(shù) std::async 本質(zhì)上是創(chuàng)建一個(gè)線(xiàn)程波闹,使用傳遞的任務(wù)方法在線(xiàn)程中運(yùn)行酝豪, 通...
泛型編程即以一種獨(dú)立于任何特定類(lèi)型的方式編寫(xiě)代碼涛碑。 模板類(lèi)型 一,模板參數(shù) 指定形式參數(shù)類(lèi)型和返回參數(shù)類(lèi)型, 模板參數(shù)不允許自動(dòng)類(lèi)型轉(zhuǎn)換 二孵淘,模板函數(shù) 1.隱式指定 2.顯式...
對(duì)于泛型的原理和基礎(chǔ),可以參考筆者的上一篇文章java泛型,你想知道的一切 一個(gè)問(wèn)題代碼 觀察以下代碼 : 上述代碼中,在調(diào)用print函數(shù)時(shí),產(chǎn)生了編譯錯(cuò)誤 require...