原创 泛型中extends和super的區別

在Java泛型中,?表示通配符,即未知。  1:?extends T  表示上界類型通配符。 1:?super T  表示下界類型通配符。 < T > 等同於 < T extends Object> < ? > 等同於 < ? exten

原创 Android+Binder機制

本文主要從進程間大致通信原理來講,能力有限,本着對學術認真負責的態度,如有偏差,歡迎留言糾正。 在講解Binder前先了解以下知識 (1)IBinder 接口:  實現了該接口表示具有跨進程通信能力。Binder就實現了IBinder。

原创 深入理解Java併發鎖ReetrantLock

我們平時在項目中遇到線程安全問題,大多使用同步來解決同步問題,同步是隱式鎖,它的加鎖與釋放,無需我們關注,虛擬機會處理。而ReetrantLock的加鎖與釋放都需要我們手動處理。下面我們將從源碼角度來分析ReetrantLock原理。若有

原创 ThreadPoolExecutor使用的三種緩存隊列詳解(ArrayBlockingQueue+LinkedBlockingQueue+SynchronousQueue)

在使用線程池(ThreadPoolExecutor)時會用到這三種隊列。以下是通過對源碼的分析來了解各隊列的原理。 池線程的介紹柯林斯參考深入理解的Java的線程池的ThreadPoolExecutor的 三種緩存隊列的作用都是存放可運行

原创 Handler+MessageQueue+Looper+ThreadLocal+Thread詳解

本文主要講Handler+MessageQueue+Looper+ThreadLocal+Thread之間的邏輯關係,以及對源碼的分析 1:我們在每次創建Handler對象時,需要綁定Looper,而Looper對象在每個線程中只會存在一

原创 深入理解Java鎖(Synchronized)

想要解決多線程問題,首先我們需要掌握Java鎖的原理。 我們常用鎖Synchronized的方式 一:方法鎖 1:方法鎖鎖的是該對象。例如:   public static void main(String[] arr) { f

原创 Android鍵盤彈出監聽

import android.app.Activity; import android.graphics.Rect; import android.view.View; import android.view.ViewTreeObser

原创 將多個jar包壓縮成一個

介紹兩種方式實現。一:Linux命令實現1:將要合併的jar包解壓到同一目錄。例如解壓 test.jarjar xvf test.jar2:合併多個包。例如當面目下解壓了兩個文件夾。com 與 org  。將合併後的包命名爲 all.ja

原创 深入理解Java線程池ThreadPoolExecutor

1:先看下線程池屬性配置 public ThreadPoolExecutor(int corePoolSize, //核心線程池個數 int maximumPoolSize, /