1、遍歷
jar/zip
檔案中的資源
file jar =newfile(
"myfile.jar"
); zipinputstream zis = new
zipinputstream(
newfileinputstream(jar));
try
} finally
2、遍歷web應用中的資源。
setsubresources = servletcontext.getresourcepaths("/web-inf/");
3、自定義屬性編輯器,date的格式化中常用
publicclass
mypropertyeditor
extends
propertyeditorsupport
@override
public
void
setastext(string text)
throws
illegalargumentexception catch
(parseexception e)
} }
4、this關鍵字總結
呼叫建構函式,且必須放在建構函式的第一行,且不能產生迴圈構造函式呼叫。
classperson
public
person(string username)
public
person(string username, string password)
} this物件
publicvoid
print()
person person =newperson(
"zhangsan"
,"hello"
); person.print();
system.out.println(person);
測試結果:屬性的內容完全一致,具體如下。說明this代表的就是當前new出來的物件。new出來的是哪個物件this就代表這個物件。
com.alibaba.hummock.designpattern.composite2.person@1fb8ee3com.alibaba.hummock.designpattern.composite2.person@1fb8ee3
5、輸出系統屬性到螢幕,不用再乙個個的for迴圈輸出
system.getproperties().list(system.out);
6、thread的join方法
join()將多執行緒交替執行的方式轉換成了順序執行,也就是
等join的執行緒執行完成返回之後再往下推進主流程。
classmythread
implements
runnable
public
void
run() catch
(interruptedexception e)
} }
}
publicclass
junit
} }
結果: 不再是main和
mt1mt1
mt1
mt1
mt1
main
main
main
main
main
7、售票系統模擬
public class junit} class mythread extends thread catch (interruptedexception e)
} }
} 或者:
public class junit} class mythread implements runnable catch (interruptedexception e)
} }
} 測試結果:
thread-0: 10thread-1: 9
thread-1: 8
thread-0: 7
thread-0: 6
thread-1: 5
thread-0: 4
thread-1: 3
thread-1: 2
thread-0: 1
【注意】
第一:執行緒之間共享的變數必須是成員變數,而不是方法中的變數,且必須屬於執行緒的,即必須為static變數
第二:執行緒之間必須同步,即synchronized
18、多執行緒中線程安全問題
在程式中,成員變數是可以被多個成員方法操作(讀或寫),即便該變數存在加鎖(synchronized)的方法中,在多執行緒的情況下也可以被其他執行緒呼叫其他方法修改,這也就是成員變數不是執行緒安全的根本原因。servlet為執行緒不安全性即為最好例子。如果要使用成員變數,又要保證執行緒安全性,那該成員變數在其他方法中必須為唯讀,不能修改該變數。
publicclass
junit
} class
ticket
implements
runnable catch
(interruptedexception e)
system.out.println("ticket: "
+ ticket);
} public
void
update()
} 測試結果:
999ticket: 999
【注意】如果同乙個類中有多個方法都使用了synchronized關鍵字,就要分析他們獲取的是哪個物件的鎖。如果是同一把鎖,則只能被乙個執行緒獲取;否則可並行執行。
java基礎知識回顧(2)
一 switch後的小括號裡只能使用6種資料型別 byte short int char 列舉 字串。二 基本型別的值直接存在棧記憶體中,而陣列等引用型別的值存在堆記憶體中,棧記憶體只放陣列的位址。三 方法過載必須滿足三種情況 1 方法的名稱必須相同。2 方法的引數必須不同,這裡的不同分三種情況 a...
java基礎知識回顧(4)
一 基本資料型別 包裝類與string類之間的轉換 1 基本資料型別 包裝類 string類 呼叫string類的過載的valueof x 方法 int i1 10 integer i2 i1 轉為包裝類 stirng str1 string.valueof i1 轉為字串 2 string類 基本...
java的基礎知識回顧 2
運算子 運算子的優先順序 括號優先順序最大 與 1 1 1 2 3 010 011 010 2 或 0 0 0 ture true true true true 表示短路與 當第乙個條件為false的時候,第二個條件就不用判斷 表示與位運算 表示短路或 當第乙個條件為true時候,第二個條件就不用判...