需求:實現生產者和消費者,兩個生產者兩個消費者
class resource
catch (interruptedexception e1)
finally
/*原因:t1先搶到執行權,判斷falg為假,執行生產列印出"生產6786",然後將flag置為true,t2進行判斷flag為true則停在wait()處放棄資格。t3獲取執行權執行一次消費列印出「消費6786」,
這是正常模式。然後t3將flag置為false,t4進行判斷flag為假則停在wait()處。這個時候t1有可能再次搶到執行權,判斷flag為假,直接進行生產,生產後直接喚醒所有執行緒,
*/
}public void out()throws interruptedexception
catch (interruptedexception e2)
finally
}
}class produce implements runnable
public void run()
catch (interruptedexception e3)
} }}
class custom implements runnable
public void run()
catch (interruptedexception e4)
} }
}class deadlock
}
jdk1 5後更新的可變引數
在jdk1.5之後,如果我們定義乙個方法需要接受多個引數,並且多個引數型別一致,我們可以對其簡化成如下格 式 修飾符 返回值型別 方法名 引數型別 形參名 其實這個書寫完全等價與 修飾符 返回值型別 方法名 引數型別 形參名 只是後面這種定義,在呼叫時必須傳遞陣列,而前者可以直接傳遞資料即可。jdk...
JDK 1 5中新增的語言特性
1 泛型generics 支援引數化型別,安全方便 2 註解annotation inte ce,註解式程式設計 3 列舉enum 增加了enum型別,支援switch 4 變長引數 variable arguments 方法的引數數目可變 5 自動拆裝箱automatic boxing and u...
HashMap的底層實現原理(JDK7版本)
new hashmap 例項化後會在底層建立乙個長度為16的entry table陣列。可能已經執行的put map put key1,value1 首先呼叫key1所在類的hashcode 方法,計算key1的雜湊值,此雜湊值經過某種演算法計算以後,得到在entry陣列中存放的位置 如果此位置上的...