最近在做代碼最佳化時學習和研究了下JAVA多線程的使用,看了菜鳥們的見解後做了下總結。1.JAVA多線程實現方式JAVA多線程實現方式主要有三種:繼承Thread類、實現Runnable介面、使用ExecutorService、Callable、Future實現有返回結果的多線程。其中前兩種方式線程執行完後都沒有傳回值,只有最後一種是帶傳回值的。2.繼承Thread類實現多線程繼承Thread類的方法儘管被我列為一種多線程實現方式,但Thread本質上也是實現了Runnable介面的一個執行個體
/**CountDownLatch類是一個同步計數器,構造時傳入int參數,該參數就是計數器的初始值,每調用一次countDown()方法,計數器減1,計數器大於0 時,await()方法會阻塞程式繼續執行CountDownLatch如其所寫,是一個倒計數的鎖存器,當計數減至0時觸發特定的事件。利用這種特性,可以讓主線程等待子線程的結束。下面以一個類比運動員比賽的例子加以說明。*/ import java.util.concurrent.CountDownLatch;import
JNI是Java Native Interface的 縮寫。從Java 1.1開始,Java Native Interface (JNI)標準成為java平台的一部分,它允許Java代碼和其他語言寫的代碼進行互動。JNI一開始是為了本地已編譯語言,尤其是C和C++而設計 的,但是它並不妨礙你使用其他語言,只要呼叫慣例受支援就可以了。
主要涉及轉化:從String轉化為document再到xml從xml轉化為document再到Stringview plaincopy to clipboardprint?xml轉化為string: public static String xmlFile2String(String fileName) throws SAXException, IOException, ParserConfigurationException,
Java Tip 24: 如何在應用程式中播放音效檔 一個在 Java 應用程式中播放聲音程式的 step-by-step 的嚮導 Chong Ser Wah John D. Mitchell 簡介 現有的在 Java applet 中對聲音播放的支援使得聲音播放任務變得很簡單,但是在應用程式中缺少這樣的支援。此篇小技巧將告訴你如何在 Java 應用程式中播放音效檔。(6
靜態方法可以直接用類名點出來方法,而普通方法需要建立類的對象後才能調用!靜態方法和變數會調用時在記憶體產生一個唯一的標示,你可以理解成在實體記憶體中給靜態一個位子,這樣的話在調用的時候可以直接找到,而且會節省記憶體,但是如果你聲明的靜態過多的話那麼每一個都會在記憶體有一個位子,那麼你就沒有資源運行別的,會報記憶體溢出!普通方法是由java的gc機制來控制,可能同一個對象或變數在使用的過程中,這個時間的在記憶體佔了一個位子,而上個時間的還沒有從記憶體中刪除,這樣的話就可能有2個一樣的在記憶體中,這
static final、static、final區別static:靜態,全域變數,類的對象共用一個靜態變數,只初始化一次。final:常量,如果是方法則不可覆蓋,如果是類不可被繼承,必須初始化時設定值,設定後就不能改了static final:靜態變數初始化順序如下:父類靜態變數(靜態初始化話塊)>
文章目錄 1.OSI與TCP/IP體系模型2.IP和連接埠 3.TCP和UDP協議4.Socket5.常用應用程式層協議1.InteAddress類2.URL和URLConnection類3.URLDecoder和URLEncoder4.Socket和ServerSocket類5.DatagramSocket類
以下介紹經常使用的集合類,這裡不介紹集合類的使用方法,只介紹每個集合類的用途和特點,然後通過比較相關集合類的不同特點來讓我們更深入的瞭解它們。 Collection介面Collection是最基本的集合介面,一個Collection代表一組Object,即Collection的元素(Elements)。所有實現Collection介面的類都必須提供兩個標準的建構函式:無參數的建構函式用於建立一個空的Collection,有一個
文章目錄 字元流和位元組流 輸入資料流和輸出資料流 2.輸出位元組流OutputStream 3.位元組流的輸入與輸出的對應 4.字元輸入資料流Reader 5.字元輸出資料流Writer 7.字元流與位元組流轉換8.File類9.RandomAccessFile類
JAVA從J2SE5開始提供名為annotation(注釋,標註)的功能。Java的annotation,可以附加在package, class, method, field等上面,相當於給它們添加了額外的輔助資訊。附加在package, class, method,
我們在Java Annotation之介紹篇 (1)裡,比較詳細地介紹了Annotation的作用,定義,JAVA標準Annotation等。本文著重介紹怎麼樣自訂Annotation以及使用自訂的Annotation。本文不對範例作詳細解釋,有不明白的地方請參考:Java
我們在前2篇文章中:分別介紹了annotation的基本概念,以及怎麼樣自訂annotation。本文介紹怎麼在運行期(runtime)動態解析annotation。上面我們介紹過,annotation只是附加在代碼裡的附加資訊,annotation本身不會對代碼的執行產生任何影響。這樣說來,annotation到底能起什麼作用呢?1, 編譯工具或其他工具可以根據被附加在代碼裡的annotation資訊自動組建組態檔案或文檔等外部檔案。比如,sun公司就提供了apt(Annotation
Code:import java.applet.*; import java.awt.event.*; import java.awt.*; @SuppressWarnings("serial") public class music extends Applet implements ActionListener{ AudioClip audio; Button btExit,btOpen,btPlay,btLoop,btStop; /*
這兩個類使用起來非常方便,可以完成我們對定時器的絕大多數需求 Timer類是用來執行任務的類,它接受一個TimerTask做參數 Timer有兩種執行任務的模式,最常用的是schedule,它可以以兩種方式執行任務:1:在某個時間(Data),2:在某個固定的時間之後(int delay).這兩種方式都可以指定任務執行的頻率.看個簡單的例子: import java.io.IOException; import java.util.Timer; public
flash代碼:var mySocket:XMLSocket = new XMLSocket(); //本地地址,連接埠5000 mySocket.connect("localhost", 5000); //事件 mySocket.onConnect = function(myStatus) { if (myStatus) { trace("串連成功!"); //發送資訊 mySocket.send("soda" + "\n"); trace("發送成功!"); } else {
Codepackage com.skyblue.core.database;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;
Code<?xml version="1.0" encoding="UTF-8"?><templates><template autoinsert="false" context="typecomment_context" deleted="false" description="Comment for created types" enabled="true"
如果JVM裡啟動並執行程式, 它的記憶體堆和持久儲存地區的都滿了,這個時候程式還想建立對象執行個體的話,垃圾收集器就會啟動,試圖釋放足夠的記憶體來建立這個對象。這個時候如果垃圾收集器 沒有能力釋放出足夠的記憶體,它就會拋出OutOfMemoryError記憶體溢出錯誤。SUN JVM的記憶體管理方式:SUN的JVM是類似人類家族,也就是在一個地方建立對象,在它長期佔據空間之前給它多次死亡的機會,SUN JVM會劃分為:1. 年輕的一代(Young
轉載:http://www.blog.edu.cn/user1/4859/archives/2005/251431.shtmlJava中Set的深入研究