1)Lock是一個介面,而synchronized是Java中的關鍵字,synchronized是內建的語言實現; 2)synchronized在發生異常時,會自動釋放線程佔有的鎖,因此不會導致死結現象發生;而Lock在發生異常時,如果沒有主動通過unLock()去釋放鎖,則很可能造成死結現象,因此使用Lock時需要在finally塊中釋放鎖; 3)Lock可以讓等待鎖的線程響應中斷,而synchronized卻不行,使用synchronized時,等待的線程會一直等待下去,
原文連結:http://java.chinaitlab.com/base/725590.html 一些初學JAVA的朋友可能會遇到JAVA的資料類型之間轉換的苦惱,例如,整數和float,double型之間的轉換,整數和String類型之間的轉換,以及處理、顯示時間方面的問題等。下面筆者就開發中的一些體會介紹給大家。
java代碼中,常常將一個類的成員變數置為private 在類的外面擷取此類的私人成員變數的value時,需要注意: 測試類別: public class AccessibleTest { private int id;
本章是關於設計模式的最後一講,會講到第三種設計模式——行為型模式,共11種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解譯器模式。這段時間一直在寫關於設計模式的東西,終於寫到一半了,寫博文是個很費時間的東西,因為我得為讀者負責,不論是圖還是代碼還是表述,都希望能盡量寫清楚,以便讀者理解,我想不論是我還是讀者,都希望看到高品質的博
首先要注意的是Java的構造器並不是函數,所以他並不能被繼承,這在我們extends的時候寫子類的構造器時比較的常見,即使子類構造器參數和父類的完全一樣,我們也要寫super就是因為這個原因。 構造器的修飾符比較的有限,僅僅只有public private protected這三個,其他的例如任何修飾符都不能對其使用,也就是說構造器不允許被成名成抽象、同步、靜態等等訪問限制以外的形式。
在這我們首先理解數組也是一種類型。在一個數組中,數組元素的類型是唯一的,即一個數組裡只能儲存一種資料類型的資料,而不能儲存多種類型的資料。 理解了這麼多以後我們首先說的是文法,首先是怎樣頂一個數組,定義數組有兩種格式 1、type [ ] arrayName; 2、type arrayName[ ]; 這兩種格式中推薦使用第一種。 其次,是數組的初始化 1、靜態初始化 文法格式 arrayName = new type [ ] {
Java JDK1.5新特性 – 枚舉 一.枚舉定義 定義:枚舉是使用enum聲明定義的特殊class,但是它並不繼承自java.lang.Object類,它是繼承自java.lang.Enum<E>這個類,這個類是所有 Java 語言枚舉類型的公用基本類,其中java.lang.Enum類實現了java.lang.Serializable和java.lang.Comparable兩個介面。 二. 枚舉的特點
什麼是進程,什麼是線程 系統要做一件事,運行一個任務,所有啟動並執行任務通常就是一個程式; 每個運行中的程式就是一個進程,這一點在工作管理員上面可以形象的看到。 當一個程式運行時,內部可能會包含多個順序執行流,每個順序執行流就是一個線程。 關於進程的特性 獨立性:進程是系統中獨立存在的實體,它可以擁有自己獨立的資源,每個進程都擁有自己私人的地址空間。在沒有經過進程本身啟動並執行情況下是不能訪問其中的內容的。
1. InterruptedException異常概述 當一個方法後面聲明可能會拋出InterruptedException 異常時,說明該方法是可能會花一點時間,但是可以取消的方法。 拋InterruptedException的代表方法有: 1. Java.lang.Object 類的 wait 方法 2. java.lang.Thread 類的 sleep 方法 3. java.lang.Thread 類的 join 方法 --
1. Wait/notify與Condition.await /condition.signal /Condition.signalAll
關於Java中的程式,進程和線程的詳解... 程式:一段靜態代碼,一組指令的有序集合,它本身沒有任何啟動並執行含義,它只是一個靜態實體,是應用軟體執行的藍本。 進程:是程式的一次動態執行,它對應著從代碼載入,執行至執行完畢的一個完整的過程,是一個動態實體,它有自己的生命 周期。它因建立而產生,因調度而運行,因等待資源或事件而被處於等待狀態,因完成任務而被撤消。反映了一個程式在
java裡每次開啟一個statement對象jdbc都會在資料庫中開啟一個遊標來執行操作,做完業務後必須馬上關閉,否則一旦多次開啟且不關閉就會造成ORA-01000: 超出開啟遊標的最大數錯誤,如果需要迴圈建立statement對象最後統一提交,可以在迴圈裡執行完活動馬上關閉,關閉後業務處於未提交狀態,直到執行connection.commit事件時活動才會提交.
今天學習Android開發突然遇到了這個問題,查閱了很多資料,並且對集中原因進行了分析。 錯誤資訊字串:java.lang.RuntimeException: Unable to start activity ComponentInfo{com.first/com.first.Game}: java.lang.NullPointerException 一般都會在Activity
import java.io.InputStream;import java.sql.*;import javax.sql.*;import javax.naming.*; //import com.vfrankmusic.sysinfo.SysInfo; /** * <p>Title: MusicWeb</p> * <p>Description: MusicWeb site</p> *
Java基礎環境變數的配置 Java環境變數的配置主要包含如下三個重要環境變數,至於後續做web項目的時候,還需要配置tomcat相關的環境變數,這裡先不做總結。 一. path 1.
一,線程狀態的檢查 一般情況下無法確定一個線程的運行狀態,對於這些處於未知狀態的線程,可以通過isAlive()方法用來確定一個線程是否仍處在活動狀態。當然即使處於活動狀態的線程也並不意味著這個線程一定正在運行,對於一個已開始運行但還沒有完成任務的線程,這個方法傳回值為true。二,後台線程
第一次安裝JDK,安裝完成後配置環境變數時,發現找不到dt.jar和tools.jar兩個檔案,嘗試多次並參考http://blog.csdn.net/bruceyang2009lzu/article/details/28595571這位博主的文章後,終於成功,步驟如下: 1、先安裝JRE; 2、再安裝JDK,這個過程中會彈出JRE的安裝介面,直接×掉,然後繼續。 3、JDK安裝完成,這時候就會發現jdk目錄下有dt.jar和tools.jar兩個檔案。
做這個項目前需要先做好分析: 聊天室分為兩個模組,伺服器和用戶端。 伺服器主要實現邏輯是:用戶端第一次進入聊天室列印歡迎日誌、接收用戶端的訊息列印在聊天室中、群發給其他使用者、判斷私聊的條件。 用戶端主要實現邏輯是:初始化資訊、發送訊息給伺服器、接收來自伺服器的訊息。 項目從簡單版本往上寫,逐步增加功能: 第一個版本:通過TCP搭建伺服器和用戶端,一個用戶端上線伺服器就列印一條上線提示。
Serial收集器:(串列收集器) 這個收集器是一個單線程的收集器,但它的單線程的意義並不僅僅說明它只會使用一個CPU或一條收集線程去完成垃圾收集工作,更重要的是在它進行垃圾收集時,必須暫停其他所有的背景工作執行緒(Stop-The-World:將使用者正常工作的線程全部暫停掉),直到它收集結束。收集器的運行過程如下圖所示: 上圖中: 新生代採用複製演算法,Stop-The-World 老年代採用標記-整理演算法,Stop-The-World
注意要引入包 java.util.regex 用於匹配字元序列與Regex指定模式的類。 package com.test1; import java.io.*; import java.util.regex.*; public class Test2 { /** * @param args */ public static void main(String[] args) {