怎么給java應(yīng)用做加密鎖 java哪個關(guān)鍵字可以對對象加互斥鎖?
java哪個關(guān)鍵字可以對對象加互斥鎖?首先,Java中的synchronized可以實現(xiàn)對象上的互斥鎖。其次,讓 下面談?wù)勍交コ怄i的實現(xiàn)原理。在Java虛擬機(jī)中,synchronized支持的同步方
java哪個關(guān)鍵字可以對對象加互斥鎖?
首先,Java中的synchronized可以實現(xiàn)對象上的互斥鎖。
其次,讓 下面談?wù)勍交コ怄i的實現(xiàn)原理。在Java虛擬機(jī)中,synchronized支持的同步方法和語句都是使用monitor實現(xiàn)的。每個對象都與一個監(jiān)視器相關(guān)聯(lián)。當(dāng)線程執(zhí)行由監(jiān)視器監(jiān)視的代碼塊中的第一條指令時,該線程必須獲得被引用對象上的鎖,該鎖由監(jiān)視器實現(xiàn)。在熱點虛擬機(jī)中,monitor由ObjectMonitor實現(xiàn),C語言編寫,具體代碼在熱點虛擬機(jī)源代碼ObjectMonitor.hpp文件中。
查看源代碼,你會發(fā)現(xiàn)主要的屬性有_count (_recursions線程獲取鎖的次數(shù))、_ recurrences(重新進(jìn)入的鎖數(shù))、_owner(指向持有ObjectMonitor對象的線程)、_WaitSet(等待狀態(tài)的線程集)和_EntryList(等待鎖塊狀態(tài)的線程隊列)。
當(dāng)并發(fā)線程執(zhí)行同步的修改方法或語句塊時,它首先進(jìn)入_EntryList。當(dāng)一個線程獲得對象的monitor時,將monitor對象中的_owner變量設(shè)置為當(dāng)前線程,同時monitor對象中的counter _count加1,使當(dāng)前線程成功獲得同步鎖。
當(dāng)同步修飾方法或語句塊中的線程調(diào)用wait()方法時,當(dāng)前線程將釋放它持有的monitor對象,monitor對象中的_owner變量將被賦值為null。同時monitor對象中的_count值會減1,然后當(dāng)前線程進(jìn)入_WaitS
Java編寫一個簡單的窗口程序?
導(dǎo)入公共類work { public static void main(String[]args){//todo自動生成的方法存根//添加用戶名和密碼正確信息字符串useName #34ABC#34。
字符串userPwd #34123#34
掃描儀sc新掃描儀()
(# 34-輸入用戶名和密碼-# 34)
(#34用戶名:#34)
字符串()
(#34密碼:#34)
字符串密碼()
我f(name usename amp password use pwd){(# 34用戶名Mina可以正確登錄# 34);
} else {(# 34錯誤的用戶名或密碼#34)}