原创 java開發:java多線程(九):死鎖

簡介: 死鎖是指多線程在相互競爭資源時陷入僵局,導致線程無法往下執行。例如線程1持有A資源,運行過程中去請求B資源,同時線程2持有B資源,此時也正在請求A資源,倆個線程互相持有對方需要的資源,並且自身又不肯釋放自己佔有的資源,從

原创 android開發:ThreadLocal使用場景與源碼解析

簡介: ThreadLocal可以實現線程內部存儲數據,數據存儲以後,只有指定線程可以得到存儲數據。使用方式如下: public class Main6Activity extends AppCompatActivity {

原创 java開發:JAVA多線程(八):讀寫鎖ReadWriteLock

java開發中實現線程同步我們一般使用synchronize來修飾方法或者代碼塊,synchronize是一種互斥鎖,只有一個線程能拿到鎖。在實際開發中我們會有這麼一種情況:多個線程同時讀寫,讀線程的數量遠遠大於寫線程。而我們知

原创 使用Android Studio自帶的Memory monitor工具檢測內存泄漏

首先寫個內存泄漏的例子:單例模式 import android.content.Context; /** * @Author: david.lvfujiang * @Date: 2019/12/5 * @Describe:

原创 java開發:Java虛擬機筆記(2):垃圾標記算法

簡介: 我們知道堆內存中幾乎存放着程序所有的對象實例,垃圾收集器在對堆回收之前,第一件事情就是要確定這些對象哪些還“存活”着,哪些對象已經“死去”(即不可能再被任何途徑使用的對象)。 1.引用計數算法 這種算法的思想是給對象

原创 java開發:java多線程:CyclicBarrier和CountDownLatch使用詳解

CountDownLatch: CountDownLatch是一個非常實用的多線程控制工具類,稱之爲“倒計時器”,它允許一個或多個線程一直等待,直到其他線程的操作執行完後再執行。 public class Main6Acti

原创 java開發:靜態代碼塊、構造代碼塊執行時期與順序

今天突發奇想,靜態代碼塊、構造代碼塊和構造函數執行時期和順序是怎樣的呢?於是我寫了的demo測試了一下 /** * @Author: david.lvfujiang * @Date: 2020/1/12 * @Desc

原创 android開發:android代碼不規範引起的內存泄漏與及解決辦法

一、什麼是內存泄漏 內存泄漏是指當對象已經使用完畢,但是在內存中還有其他對象或者變量(靜態變量)持有它的引用,GC的時候系統無法回收該對象。即長生命週期的對象持有短生命週期的對象的引用。換成更通俗的話講:一個對象已經使用完畢了,

原创 java開發:父類的靜態方法能否被子類重寫

父類的靜態方法能否被子類重寫? 答:不能 java中實例方法的重寫其實是一種運行時多態: public class Person { public String getInfo() {} } public class S

原创 Android開發:使用Lambda表達式高效開發

簡介: JDK1.8後java開始支持Lambda表達式,使用Lambda表達式我們就可以在Android中替換匿名類的寫法。本來一個Button點擊事件監聽要寫6行代碼,我們1行就可以搞定。 1.引入依賴 implement

原创 android開發:app實現中英文切換

最近做了個小項目,領導要求添加可以切換中英文的功能,自己實現了這麼一個效果: 這裏說一下我的實現思路: 1.編寫不同語言環境的string.xml文件 2.編寫一個工具類修改程序的配置信息 3.銷燬重建activity使配

原创 java開發:枚舉的使用

前言: 枚舉類型可以取代以往常量的定義方式,即將常量封裝在類或接口中。此外,枚舉類型還提供了安全檢查功能。枚舉類型本質上還是以類的形式存在。 舉個例子: 假如說我們有個方法要判斷參數來知道今天是星期幾 初級程序員寫法: p

原创 android開發:AsyncTask實現併發執行異步任務

Android開發:異步任務AsyncTask源碼解析 上篇文章我們講解了AsyncTask的源碼:我們知道AsyncTask默認是串行執行異步任務,線程池是一個一個的處理任務,處理完後再從任務隊列拿。但是在多線程併發下這樣做

原创 android開發:BottomNavigationView仿今日頭條底部菜單欄

效果: 1.在xml中加入BottomNavigationView <com.google.android.material.bottomnavigation.BottomNavigationView andr

原创 java開發:java的8中基本數據類型各佔多少字節

java一共有8中基本數據類型: 1.byte:佔1個字節 2.short:佔2個字節 3.int:佔4個字節 4.long:佔8個字節 5.float:佔4個字節 6.double :佔8個字節 7.char:佔2個字節 8.b