原创 我之見--java多線程信號量Semaphore

      jdk提供很原語來讓我們控制進程的併發,信號量是重要的一個。信號量一個重要的特質就是計數, Semaphore可以控制某個資源可被同時

原创 我之見--線程調度基本知識

           之前我們已經學習過了,線程的一個主要知識:資源共享;其實線程還有另外一個主要的內容就是線程之間的調度,一般而言線程的執行是要獲取cpu,可能大家以爲線程的調度無非就是Cpu的調度,其實這並不是這個意思,對於Cpu的調

原创 我之見--java多線程 線程池使用

     多線程是java 一個很好的特性,多線程開發提交了用戶的體驗,不用等待這麼久,但如果只是不停的創建線程,必然會帶來很多問題,我們來看下面一個場境:如果服務器爲了提交響應速度爲每個請求創建一個線程,如果用戶10000個用戶,就必須

原创 我之見--線程合併

       今天我們主要來學習線程合併(join); 爲什麼要合併呢?如果一個線程長期佔用Cpu一直不肯釋放,如果這個時候我們又想執行另外一個線程,我們可以要執行的線程合併到當前的線程。ps:線程A 一直佔用Cpu,這裏需要執行B線程,

原创 我之見--線程同步,鎖

爲什麼要進行同步? 線程的同步是爲了防止多個線程訪問一個數據對象時,對數據造成的破壞。 線程同步有以下幾點要注意: 多線程之間必須使用同一個對象,如果不是同一個,不存在同步問題。 對象必須是共享可變對象,共享對象意味着可以多個線程同時訪

原创 我之見 --線程調度 休眠 讓步

     今天我們接着學習線程調度相關的內容:sleep(休眠),休眠:是指線程進入阻塞狀態 ,主動讓出cpu給其他線程,便於輪換執行,時間到了之後線程進入就緒狀態,獲取Cpu 執行。     線程休眠的方法是Thread.sleep(

原创 我之見--java多線程CountDownLatch

      CountDownLatch 又叫“閉鎖” 相當一扇門,當所有線程沒有到達之前,鎖一直是關閉,沒有任何線程可以通過。類以一個計數器,計數所有線程是否已經到達,或者資源是否已經初始化完成,不過這個計數器是一個倒計的。一般有以下

原创 我之見--HashMap原理解析

第一:HashMap的概念  <span style="font-size:14px;">HashMap 基於哈希表的 Map 接口的實現。此實現提供所有可選的映射操作,並允許使用 null 值和 null 鍵。(除了非同步和允許使用

原创 我之見--java進程,線程

第一 :什麼是進程?   進程是操作系統結構的基礎;是一個正在執行的程序;計算機中正在運行的程序實例;可以分配給處理器並由處理器執行的一個實體;由單一順序的執行顯示,一個當前狀態和一組相關的系統資源所描述的活動單元;因此進程有以下特點: 

原创 我之見--多線程ReentrantReadWriteLock

   前面我們已經學習了很多關於多線程的知識,現在我們來學習jdk提交的鎖--可重入讀寫鎖,可重入讀寫鎖就是指當一個線程持有某個對象的鎖,其他線程也可以獲取和進入同步區域。特別在讀寫的時候,如果A線程在獲取鎖,並且正在讀,如果讀線程B也要

原创 我之見--線程ReentrantLock

Java 5中提供了另一種實現線程同步或互斥的機制,即使用Lock和Condition。 Lock比傳統線程模型中的synchronized方式更加面向對象,也提供了更多可選擇的鎖機制。與生活中的鎖類似,鎖本身也是一個對象。兩個線程執

原创 我之見--java 線程

 在前面已經講了,java的進程Process,同時也講了java的線程定義:我之見--java進程,線程   線程是指在進程中運行的代碼,我們必須先來了解一下線程有幾種狀態,以及各個狀態之間的轉換 線程的狀態類型:     1. 新

原创 我之見--java 多線程CyclicBarrier

      CyclicBarrier 和之前CountDownLatch(閉鎖)功能上面差不多,都阻塞一組線程直到某個事件發生 。主要我們來看一下它們的區別:     1 . CountDownLatch 是等待事件的發生,而Cycli

原创 我之見--java 多線程 線程池ThreadPoolExecutor源碼分析

         前面我們對線程池使用已經有了一個很深的瞭解,什麼是線程池?線程池有什麼作用?線程池就是管理一組同構工作線程的資源池,線程池作用主要有兩個方面,線程的管理,重複利用線程,避免重複創建線程。       我們先來看一下線程池

原创 獲取視頻時長

今天在工作用到獲取視頻的時長在網上找半天也還是隻是通過讀數據庫裏的數據,由於項目中要用到從一個視頻文件中讀取時間,最後發現一個方法,在此做一個筆記。 代碼如下: MediaPlayer mMediaPlayer=new MediaPlay