Time of Update: 2017-02-27
join為非靜態方法,定義如下:void join() 等待該線程終止。void join(long millis) 等待該線程終止的時間最長為 millis 毫秒。void join(long millis, int nanos) 等待該線程終止的時間最長為 millis 毫秒 + nanos 納秒。/*** Java線程:線程的調度-合并** @author leizhimin 2009-11-4 9:02:40 */public class Test {
Time of Update: 2017-02-27
守護線程使用的情況較少,但並非無用,舉例來說,JVM的記憶體回收、記憶體管理等線程都是守護線程。還有就是在做資料庫應用時候,使用的資料庫連接池,串連池本身也包含著很多後台線程,監控串連個數、逾時時間、狀態等等。setDaemon方法的詳細說明:public final void setDaemon(boolean on)將該線程標記為守護線程或使用者線程。當正在啟動並執行線程都是守護線程時,JAVA 虛擬機器退出。該方法必須在啟動線程前調用。該方法首先調用該線程的 checkAccess 方法,
Time of Update: 2017-02-27
線程的同步是Java多線程編程的痛點,往往開發人員搞不清楚什麼是競爭資源、什麼時候需要考慮同步,怎麼同步等等問題,當然,這些問題沒有很明確的答案,但有些原則問題需要考慮,是否有競爭資源被同時改動的問題?在本文之前,請參閱《Java線程:線程的同步與鎖》,本文是在此基礎上所寫的。對於同步,在具體的Java代碼中需要完成一下兩個操作:把競爭訪問的資源標識為private;同步哪些修改變數的代碼,使用synchronized關鍵字同步方法或代碼。當然這不是唯一控制並發安全的途徑。synchronize
Time of Update: 2017-02-27
追其同步的根本的目的,是控制競爭資源的正確的訪問,因此只要在訪問競爭資源的時候保證同一時刻只能一個線程訪問即可,因此Java引入了同步代碼快的策略,以提高效能。在上個例子的基礎上,對oper方法做了改動,由同步方法改為同步代碼塊模式,程式的執行邏輯並沒有問題。/*** Java線程:線程的同步-同步代碼塊** @author leizhimin */public class Test { public static void main(String[] args) {
Time of Update: 2017-02-27
實際上,準確說應該是“生產者-消費者-倉儲”模型,離開了倉儲,生產者消費者模型就顯得沒有說服力了。對於此模型,應該明確一下幾點:1、生產者僅僅在倉儲未滿時候生產,倉滿則停止生產。2、消費者僅僅在倉儲有產品時候才能消費,倉空則等待。3、當消費者發現倉儲沒產品可消費時候會通知生產者生產。4、生產者在生產出可消費產品時候,應該通知等待的消費者去消費。此模型將要結合java.lang.Object的wait與notify、notifyAll方法來實現以上的需求。這是非常重要的。/
Time of Update: 2017-02-27
發生死結的原因一般是兩個對象的鎖相互等待造成的。在《Java線程:線程的同步與鎖》一文中,簡述死結的概念與簡單例子,但是所給的例子是不完整的,這裡給出一個完整的例子。/*** Java線程:並發協作-死結** @author Administrator*/public class Test { public static void main(String[] args) { DeadlockRisk dead = new DeadlockRisk(
Time of Update: 2017-02-27
談及到volatile關鍵字,不得不提的一篇文章是:《Java 理論與實踐: 正確使用 Volatile
Time of Update: 2017-02-27
有關Java5線程新特徵的內容全部在java.util.concurrent下面,裡麵包含數目眾多的介面和類,熟悉這部分API特徵是一項艱難的學習過程。目前有關這方面的資料和書籍都少之又少,大所屬介紹線程方面書籍還停留在java5之前的知識層面上。當然新特徵對做多線程程式沒有必須的關係,在java5之前通用可以寫出很優秀的多線程程式。只是代價不一樣而已。線程池的基本思想還是一種對象池的思想,開闢一塊記憶體空間,裡面存放了眾多(未死亡)的線程,池中線程執行調度由池管理器來處理。當有線程任務時,從池
Time of Update: 2017-02-27
什麼是設計模式?如果一個問題一再地出現,就必須找到一個能夠有效解決問題的方法。那個方法就被描述成模式。設計模式是獨立於程式設計語言的,用來解決常見的,物件導向的設計問題的策略。當你實施設計的時候,你應該知曉一些常見的解決之道的名稱。通曉設計模式可以使人們相互間做有效交流。實際上,你可能已經對一些設計模式很熟悉了,你只是沒有用大家耳熟能詳的稱謂來描述它們而已。太陽公司建議使用GOF(“四人幫”,指寫了“設計模式-可重複使用的物件導向軟體的元素”一書的
Time of Update: 2017-02-27
1.簡介在一篇早些的文章(請參見Test Infected: Programmers Love Writing Tests, Java Report, July 1998, Volume 3, Number
Time of Update: 2017-02-27
一 基本知識1.1 效能是什麼在效能調優之前,我們首先來瞭解一下效能是什嗎?關於效能,我想每個學習過Java的人都能列出幾點,甚至可以夸夸其談。在《Java TM Platform Performance》一書中,定義了如下五個方面來作為評判效能的標準:1) 運算的效能——哪一個演算法的執行效能最好?2) 記憶體的分配——程式運行時需要耗費多少記憶體?3)
Time of Update: 2017-02-27
首先把問題擺出來,先看這個代碼String a = "ab";String b = "a" + "b";System.out.println((a == b));列印結果會是什嗎?類似這樣的問題,有人考過我,我也拿來考過別人(蠻好玩的,大家也可以拿來問人玩),一般答案會是以下幾種:1.true"a" + "b" 的結果就是"ab",這樣a,b都是"ab"了,
Time of Update: 2017-02-27
一、在環境變數中:classpathC:\Sun\AppServer\jdk\lib\tools.jar;C:\Sun\AppServer\jdk\lib\dt.jar;C:\Sun\AppServer\jdk\lib\bin;C:\Sun\AppServer\jdk\lib\ant\bin;c:\Program Files\Microsoft SQL Server 2000 Driver for
Time of Update: 2017-02-27
偶爾搜到的東東,不記得是那位的Bolg了。很不錯的文章。。。。§1黑暗歲月有一個String,如何查詢其中是否有y和f字元?最黑暗的辦法就是:程式1:我知道if、for語句和charAt()啊。class Test{public static void main(String args[]) {String str="For my money, the important thing "+"about the meeting was
Time of Update: 2017-02-27
如果你曾經用過Perl或任何其他內建Regex支援的語言,你一定知道用Regex處理文本和匹配模式是多麼簡單。如果你不熟悉這個術語,那麼“Regex”(Regular
Time of Update: 2017-02-27
在很多Java應用中需要在程式中調用Java編譯器來編譯和運行。但在早期的版本中(Java SE5及以前版本)中只能通過tools.jar中的com.sun.tools.javac包來調用Java編譯器,但由於tools.jar不是標準的Java庫,在使用時必須要設定這個jar的路徑。而在Java
Time of Update: 2017-02-27
歡迎光臨有關 Java 和 CORBA 技術的這一定期欄目。此第一期將概述 Java 和 CORBA 技術,並協助您決定如何最有效地讓它們為您工作。以後的欄目將提供 Java 和 CORBA 編程的內行指導和代碼。在 1855 年,時年 26 歲的 Joshua Chamberlain 是 Bowdoin
Time of Update: 2017-02-27
dom4j為一個XML文檔在記憶體中建立了一個樹物件模型。
Time of Update: 2017-02-27
可以這樣認為,每個類都有一個名為Initialize()的方法,這個名字就暗示了它得在使用之前調用,不幸的是,這麼做的話,使用者就得記住要調用這個方法,java類庫的設計者們可以通過一種被稱為建構函式的特殊方法,來保證每個對象都能得到被始化.如果類有建構函式,那麼java就會在對象剛剛建立,使用者還來不及得到的時候,自動調用那個建構函式,這樣初始化就有保障了。我不知道原作者的描述和譯者的理解之間有多大的差異,結合全章,我沒有發現兩個最關鍵的字""和""。至
Time of Update: 2017-02-27
本文提供一個項目中的錯誤執行個體,提供對其觀察和分析,揭示出Java語言執行個體化一個對象具體過程,最後總結出設計Java類的一個重要規則。通過閱讀本文,可以使Java程式員理解Java對象的構造過程,從而設計出更加健壯的代碼。本文適合Java初學者和需要提高的Java程式員閱讀。程式擲出了一個異常作者曾經在一個項目裡面向項目群組成員提供了一個抽象的對話方塊基類,使用者只需在子類中實現基類的一個抽象方法來畫出顯示資料的介面,就可使項目內的對話方塊具有相同的風格。具體的代碼實現片斷如下(為了簡潔起