Time of Update: 2017-02-27
在Java5之前,線程是沒有傳回值的,常常為了“有”傳回值,破費周折,而且代碼很不好寫。或者乾脆繞過這道坎,走別的路了。現在Java終於有可傳回值的任務(也可以叫做線程)了。可傳回值的任務必須實現Callable介面,類似的,無傳回值的任務必須Runnable介面。執行Callable任務後,可以擷取一個Future的對象,在該對象上調用get就可以擷取到Callable任務返回的Object了。下面是個很簡單的例子:import java.util.concurrent
Time of Update: 2017-02-27
在Java5中,專門提供了鎖對象,利用鎖可以方便的實現資源的封鎖,用來控制對競爭資源並發訪問的控制,這些內容主要集中在 java.util.concurrent.locks 包下面,裡面有三個重要的介面Condition、Lock、ReadWriteLock。 Condition Condition 將 Object 監視器方法(wait、notify 和 notifyAll)分解成截然不同的對象,以便通過將這些對象與任意
Time of Update: 2017-02-27
Java中讀寫鎖有個介面java.util.concurrent.locks.ReadWriteLock,也有具體的實現ReentrantReadWriteLock,詳細的API可以查看JavaAPI文檔。下面這個例子是在文例子的基礎上,將普通鎖改為讀寫鎖,並添加賬戶餘額查詢的功能,代碼如下:import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.conc
Time of Update: 2017-02-27
因此,本人認為,這個訊號量類如果能返回數目,還能知道哪些對象在等待,哪些資源可使用,就非常完美了,僅僅拿到這些概括性的數字,對精確控制意義不是很大。目前還沒想到更好的用法。下面是一個簡單例子:import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Semaphore;/*** Java線程:新特徵-訊號量** @author leiz
Time of Update: 2017-02-27
阻塞隊列是Java5線程新特徵中的內容,Java定義了阻塞隊列的介面
Time of Update: 2017-02-27
對於阻塞棧,與阻塞隊列相似。不同點在於棧是“後入先出”的結構,每次操作的是棧頂,而隊列是“先進先出”的結構,每次操作的是隊列頭。這裡要特別說明一點的是,阻塞棧是Java6的新特徵。、Java為阻塞棧定義了介面:java.util.concurrent.BlockingDeque,其實作類別也比較多,具體可以查看JavaAPI文檔。下面看一個簡單例子:import java.util.concurrent.BlockingDeque;import j
Time of Update: 2017-02-27
所謂的原子量即操作變數的操作是“原子的”,該操作不可再分,因此是安全執行緒的。為何要使用原子變數呢,原因是多個線程對單個變數操作也會引起一些問題。在Java5之前,可以通過volatile、synchronized關鍵字來解決並發訪問的安全問題,但這樣太麻煩。Java5之後,專門提供了用來進行單變數多線程並發安全訪問的工具包java.util.concurrent.atomic,其中的類也很簡單。下面給出一個反面例子(切勿模仿):import java.util.conc
Time of Update: 2017-02-27
障礙器是多線程並發控制的一種手段,用法很簡單。下面給個例子:import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/*** Java線程:新特徵-障礙器** @author leizhimin */public class Test { public static void main(String[] args) {
Time of Update: 2017-02-27
在java中,我們可以通過兩種方式來擷取隨機數(generating a random number)一種是大家熟悉的java.lang.Math.Random()靜態方法,另一種是建立java.util.Random對象。下面是兩種方法的使用過程:一.java.lang.Math.random()在使用這一靜態方法的時候,我們不需要import任何包,因為java.lang.*包是預設載入的,下面舉例說面使用方法:public class RandomTest{ public static
Time of Update: 2017-02-27
大家用的時候只需要把設定檔裡的內容改掉就可以啦!設定檔Database.Property內容jdbc.drivers=sun.jdbc.odbc.JdbcOdbcDriverjdbc.url=jdbc:odbc:mydatajdbc.username=systemjdbc.password=managerJAVABEAN檔案內容package community.database;import java.io.*;import java.util.*;import java.sql.*;/**
Time of Update: 2017-02-27
Java開發套件 (JDK)對加密和安全性有很好的支援。其中一個優勢就是其內建的對Socket通訊的支援。因此,很容易做到在伺服器和客戶之間建立安全的資料流。流Java streams 是一個強大的編程工具。java.io包提供了很多標準的流類型,並能很容易的建立自己的流類型。流的一個有用的特點是和鏈表一樣的簡單處理過程。將 FileReader和
Time of Update: 2017-02-27
確實到了並發盛行的時期了, 我覺得最重要的原因還是多核處理器及其硬體體系的日趨成熟, 並且成本攤薄到福士價格了.j.u.c 包主要是為了效能來的, 其設計其實不如Java傳統的內建同步機制(synchronized塊和方法, 以及 Object.wait(); Object.notify())優雅, 但是傳統同步機制的最大弊病就是不區分共用同步(一般是並發的讀操作) 與 互斥同步 (一般是寫操作),
Time of Update: 2017-02-27
過去看書我總是不能揪起深意,總是囫圇吞棗,也許是上了年紀的緣故(呵呵:-)),現在開始慢慢的進入正題了,呵呵!大家都應該知道在JAVA中Statci方法,是不能調用非Statci方法,和非Statci資料成員的,他只能夠調用類方法和類變數,這是一個定理,但你想過為什麼了嗎?真的想過???在這裡我將竭盡所能為您闡述Static,其實要想完全瞭解Static,那麼首先This你要清楚,This代表的是”當前的對象“,This用於返回當前對象的一個引用。This在應用中的例子0
Time of Update: 2017-02-27
一、Java
Time of Update: 2017-02-27
Java本身是一種設計的非常簡單,非常精巧的語言,所以Java背後的原理也很簡單,歸結起來就是兩點:1、JVM的記憶體管理理解了這一點,所有和對象相關的問題統統都能解決2、JVMClassLoader理解了這一點,所有和Java相關的配置問題,包括各種AppServer的配置,應用的發布問題統統都能解決就像張無忌學太極劍,本質就是一圈一圈的畫圓,你要是懂得了太極劍的本質,那麼太極劍就那麼一招而已,本身是很容易學的,只是難度在於你要能夠舉一反三,化一式劍意為無窮無盡的劍招,這就需要一點悟性和不斷的
Time of Update: 2017-02-27
在Regex裡面匹配一個斜杠,需要用4個斜杠:Java代碼import java.util.regex.Matcher;import java.util.regex.Pattern;public class test {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubString textString = new String
Time of Update: 2017-02-27
為某研究所編寫一個通用程式,用來計算每一種交通工具運行1000公裡所需的時間,已知每種交通工具的參數都是3個整數A、B、C的運算式。現有兩種工具:Car和Plane,其中Car的速度運算公式為:A*B/C,Plane的速度運算公式為:A+B+C。需要編寫三類:ComputeTime.java,Plane.java,Car007.java和介面Common.java,要求在未來如果增加第3種交通工具的時候,不必修改以前的任何程式,只需要編寫新的交通工具的程式。其運行過程如下,從命令列輸入Compu
Time of Update: 2017-02-27
你的使用者運行Javaapplications時會遇到困難嗎?你可以建立一個Windows的BAT檔案或UNIX的SH檔案來協助他調用application。但是如果你有GUI,那麼你就有比這簡單得多的辦法來解決這個問題了。 在許多現代的案頭上,.jar檔案被設定成自動運行。這使得在使用者看來.jar檔案的應用是很普通的。他們下載了這個東西,放在他們的案頭上,然後當他們想用的時候點一下就可以了。這個魔術變起來驚人的容易。每個.jar檔案都有一個清單,它們以如下的檔案名稱儲存著:META-INF/
Time of Update: 2017-02-27
知道UML造成了怎樣的局面大混亂嗎?知道什麼樣的功能是UML擁有但JAVA不具備的嗎?知道我們為什麼需要除JAVA外的另一種電腦語言嗎?UML並不僅僅只是JAVA或者其它什麼語言的替代品。UML並不僅僅只是JAVA或者其它什麼語言的替代品。UML是物件導向的分析及設計的注釋。UML是獨立於那些傳統設計語言之外的一種語言。因為UML並不依附於某種語言,而且它被用作是聯絡溝通Java、 C++
Time of Update: 2017-02-27
使用Java的一個主要優點就是無需擔心廢棄對象,即,讓Java運行時負責Java對象的記憶體管理。這是通過讓Java運行時對不再使用的Java對象進行垃圾收集而實現的。垃圾收集是一個比較複雜的過程。通常,Java運行時會遍曆堆,檢查不再被其他對象引用、從而可以安全刪除的對象,然而,由於垃圾收集佔用CPU周期,所以它可能會影響應用程式代碼的執行。即,如果在執行應用程式代碼的過程中執行垃圾收集,則應用程式代碼的回應時間可能延長。這會導致使用者事務延遲的延長。更為糟糕的是,因為使用者不知道何時會進行垃