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