讓Java代碼更高效。本站提示廣大學習愛好者:(讓Java代碼更高效)文章只能為提供參考,不一定能成為您想要的結果。以下是讓Java代碼更高效正文
本文簡略引見一下在寫代碼進程頂用到的一些讓JAVA代碼更高效的技能。
1,將一些體系資本放在池中,如數據庫銜接,線程等.在standalone的運用中,數據庫銜接池可使用一些開源的銜接池完成,如C3P0,proxool和DBCP等,在運轉在容器中的運用這可使用辦事器供給的DataSource.線程池可使用JDK自己就供給的java.util.concurrent.ExecutorService.
import java.util.concurrent.Executors; import java.util.concurrent.ExecutorService; public class JavaThreadPool { public static void main(String[] args) { ExecutorService pool = Executors.newFixedThreadPool(2); Thread t1 = new MyThread(); Thread t2 = new MyThread(); Thread t3 = new MyThread(); Thread t4 = new MyThread(); Thread t5 = new MyThread(); pool.execute(t1); pool.execute(t2); pool.execute(t3); pool.execute(t4); pool.shutdown(); } } class MyThread extends Thread { public void run() { System.out.println(Thread.currentThread().getName() + "running...."); } }
2,削減收集開支,在和數據庫或許長途辦事交互的時刻,盡可能將屢次挪用歸並到一次挪用中。
3,將常常拜訪的內部資本cache到內存中,簡略的可使用static的hashmap在運用啟動的時刻加載,也能夠應用一些開源的cache框架,如OSCache和Ehcache等.和資本的同步可以斟酌按期輪詢和內部資本更新時刻自動告訴.或許在本身寫的代碼中留出接口(敕令方法或許界面方法)共手動同步。
4,優化IO操作,JAVA操作文件的時刻分InputStream and OutputStream,Reader and Writer兩類,stream的方法要快,後者重要是為了操作字符而用的,在字符僅僅是ASCII的時刻可以用stream的方法進步效力.JDK1.4以後的nio比io的效力更好。
OutputStream out = new BufferedOutputStream(new FileOutputStream(new File("d:/temp/test.txt"))); out.write("abcde".getBytes()); out.flush(); out.close();
應用BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter削減對磁盤的直接拜訪次數。
FileReader fr = new FileReader(f); BufferedReader br = new BufferedReader(fr); while (br.readLine() != null) count++;
5不要頻仍的new對象,關於在全部運用中只須要存在一個實例的類應用單例形式.關於String的銜接操作,應用StringBuffer或許StringBuilder.關於utility類型的類經由過程靜態辦法來拜訪。
6,防止應用毛病的方法,如Exception可以掌握辦法推出,然則Exception要保存stacktrace消費機能,除非需要不要應用instanceof做前提斷定,盡可能應用比的前提斷定方法.應用JAVA中效力高的類,好比ArrayList比Vector機能好。
7,對機能的斟酌要在體系剖析和設計之初就要斟酌。
總之,一個體系運轉時的機能,不過是從CPU,Memory和IO這三個重要方面來斟酌優化.削減不用要的CPU消費,削減不用要的IO操作,增長Memory應用效力。