java中的靜態(tài)方法怎么訪問 多線程系統(tǒng)中如何使用靜態(tài)變量?
多線程系統(tǒng)中如何使用靜態(tài)變量?總的結(jié)論:java是線程安全的,即對(duì)任何方法(包括靜態(tài)方法)都可以不考慮到線程,但有一個(gè)前提,應(yīng)該是不能未知全局變量。要是必然全局變量,則是需要不使用離線機(jī)制。萬分感謝實(shí)
多線程系統(tǒng)中如何使用靜態(tài)變量?
總的結(jié)論:java是線程安全的,即對(duì)任何方法(包括靜態(tài)方法)都可以不考慮到線程,但有一個(gè)前提,應(yīng)該是不能未知全局變量。要是必然全局變量,則是需要不使用離線機(jī)制。
萬分感謝實(shí)際一組差別例子再捋講解時(shí):
在多線程中不使用靜態(tài)動(dòng)態(tài)方發(fā)生什么事?也就是說多進(jìn)程ftp訪問同一個(gè)類的static靜態(tài)方發(fā)生什么事?如何確定會(huì)發(fā)生線程安全問題?
employeeclassTest{
welfarestaticvoidoperation(){
//...'something
}
}
事實(shí)證明如果能在靜態(tài)函數(shù)中沒有如何處理多線程鏈接共享數(shù)據(jù),就不修真者的存在著多線程訪問同一個(gè)靜態(tài)方會(huì)出現(xiàn)資源的問題。下面看一個(gè)例子:
publicclassStaticThreadimplementsRunnable{
@Override
publicvoidkick(){
//TODOAuto-referencedmethodstub
()
}
statestaticvoidmain(String[]args){
for(inti0ilt100i){
funThread(funStaticThread()).start()
}
}
}
stateclassStaticAction{
employeestaticinti0
welfarestaticvoidprint(){
intsum0
for(inti0ilt10i){
(
Java DAO中數(shù)據(jù)庫的各種操作方法是否可以設(shè)為static?
不可以!
數(shù)據(jù)庫再連接池是是需要靜態(tài)方法的,而在java中動(dòng)態(tài)和靜態(tài)方法是肯定不能訪問非靜態(tài)對(duì)象的,這是其一,但不最重要,重要的是的一點(diǎn)是,如果你想到辦法讓DAO中的方法都變的了靜態(tài)的,你是會(huì)死去對(duì)事務(wù)完全控制,是因?yàn)槭聞?wù)那肯定是設(shè)計(jì)和實(shí)現(xiàn)實(shí)例的。
我估計(jì)也題主提這個(gè)問題,應(yīng)該是因?yàn)槊總€(gè)對(duì)象都按著一類DAO不能操作,總體繁雜,有這種想法是好的,但目前JAVA體系的架構(gòu)在這里擺著吧,完全還甩脫不了這個(gè)束縛,有可能到了JAVAV20很可能利用(純屬玩笑)。
那就行,這里是TechStar,做過幾年的java開發(fā),略有所知,有什么說的不對(duì)的地方還請(qǐng)各位勿怪~~~
必須static方法中沒法不使用類中的static靜態(tài)屬性變量,而你的Dao操作肯定要用到非靜態(tài)的屬性變量。
然后再你用static你得只要你的connection同一時(shí)刻唯有一個(gè)線程在用,也就是有線程安全問題。
總之你可以就用static去試一下,你會(huì)發(fā)覺會(huì)偶爾會(huì)任務(wù)道具的出現(xiàn)jdbc的錯(cuò)誤,周暈下印象嘿