Java基礎(chǔ)教程_第1頁
Java基礎(chǔ)教程_第2頁
Java基礎(chǔ)教程_第3頁
Java基礎(chǔ)教程_第4頁
Java基礎(chǔ)教程_第5頁
已閱讀5頁,還剩36頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

D1:Java介紹1.1 Java起源、發(fā)展歷程和版本劃分:1982年SUN公司成立,1991年出現(xiàn),”O(jiān)ak”Java的早期稱呼,用于嵌入家電;1998年發(fā)布JDK1.2,并使用“Java 2”;目前我們大部分用JDK1.6的版本;Java根據(jù)應(yīng)用方向,分為三個(gè)版本及對應(yīng)的類庫:J2ME 移動(dòng)版J2SE 標(biāo)準(zhǔn)版J2EE 企業(yè)版1.2 Java語言特點(diǎn)易于學(xué)習(xí) ; 高效率的執(zhí)行方式,即先編譯后執(zhí)行;與平臺無關(guān),即跨平臺,可運(yùn)行于主流操作系統(tǒng)如UNIX LINUX Windows上;分布式;安全性;豐富的API文檔和類庫;多線程;1.3、關(guān)于JDK和JVM?要進(jìn)行Java開發(fā),必須得安裝JDK。JDK(Java Development Toolkit)是Java開發(fā)工具包的簡稱,包含運(yùn)行Java程序的類庫和命令;JDK包含JRE,它包含比JRE更多的命令。JRE只是運(yùn)行時(shí)環(huán)境,所包含的類庫比JDK??;一般來講,開發(fā)人員都應(yīng)采用對應(yīng)的JDK,目前用JDK6版本;JRE=JVM+Runtime Interpreter;Java運(yùn)行環(huán)境的三項(xiàng)主要功能:l 加載代碼:由class loader 完成;l 校驗(yàn)代碼:由bytecode verifier 完成;l 執(zhí)行代碼:由 runtime interpreter完成。關(guān)于Java虛擬機(jī)(JVM)l 在一臺計(jì)算機(jī)上由軟件或硬件模擬的計(jì)算機(jī)。Java虛擬機(jī)(JVM)讀取并處理經(jīng)編譯過的平臺無關(guān)的字節(jié)碼class文件 。l Java編譯器針對Java虛擬機(jī)產(chǎn)生class文件,因此是獨(dú)立于平臺的。l Java解釋器負(fù)責(zé)將Java虛擬機(jī)的代碼在特定的平臺上運(yùn)行。l Java語言是先編譯源文件,后執(zhí)行class文件!1.4 Java程序分類l Java Application以main()方法作為程序入口,由Java解釋器加載執(zhí)行。l Java Apple 沒有main()方法作為程序入口,由瀏覽器或appletviewer加載執(zhí)行。l Jsp,ServletWeb上的應(yīng)用程序,即主流J2EE服務(wù)程序1.5 JDK安裝和配置上級演示1.6 第一個(gè)Java程序Java應(yīng)用程序舉例HelloWorld.java:源文件:HelloWorld.java /* *范例名稱:Hello World程序 */ public class HelloWorld public static void main (String args) System.out.println(Hello World!); 先編譯 javac 類名.java,(編譯完會(huì)形成一個(gè)二進(jìn)制的class文件,該文件與平臺無關(guān),即可以跨平臺運(yùn)行)后運(yùn)行java 類名1.7 小結(jié)命名 如果.java 文件包含一個(gè)public 類,它必需按該類名命名。Java語言中單詞拼寫嚴(yán)格區(qū)分大小寫;類個(gè)數(shù)一個(gè)源文件中最多只能有一個(gè)public 類。其它類的個(gè)數(shù)不限。 1.8、Java學(xué)習(xí)路線;初級部分: Java核心技術(shù)(Core Java);中級部分: JSP JavaBean Servlet等;高級部分: SSH框架 EJB 數(shù)據(jù)庫(Oracle SQL Server MySQL) 各種商用應(yīng)用服務(wù)器配置;項(xiàng)目部分: UML建模 需求分析等;D2:Java基礎(chǔ)2.1 標(biāo)示符和關(guān)鍵字標(biāo)示符:標(biāo)示符:Java程序中的類、屬性、方法、對象、變量等元素都應(yīng)有自己的名稱,各元素的名稱通稱為標(biāo)識符。 Java標(biāo)識符定義規(guī)則:由字母、數(shù)字、_和$組成;開頭字符必須是字母、下畫線或$。關(guān)鍵字:l Java中一些賦以特定的含義、并用做專門用途的單詞稱為關(guān)鍵字(keyword)l 所有Java關(guān)鍵字都是小寫的,TURE、FALSE、NULL等都不是Java關(guān)鍵字 ;l goto和const 雖然從未使用,但也作被為Java關(guān)鍵字保留;l true,false,null雖被用做專門用途,但也不是Java關(guān)鍵字,它們只是顯式常量值; 2.2 Java的基本數(shù)據(jù)類型Java數(shù)據(jù)類型劃分?jǐn)?shù)據(jù)類型基本數(shù)據(jù)類型引用數(shù)據(jù)類型數(shù)值型字符型(char)布爾型(boolean)整數(shù)類型(byte, short, int, long)浮點(diǎn)類型(float, double)類(class)接口(interface)數(shù)組boolean布爾類型:只有true和false兩種值;char字符型:字符常量是用單引號括起來的單個(gè)字符char c = A;Java字符采用Unicode編碼,每個(gè)字符占兩個(gè)字節(jié),因而可用十六進(jìn)制編碼形式表示char c1 = u0061; /u0061表示a (因?yàn)镴ava字符采用Unicode編碼,每個(gè)字符占兩個(gè)字節(jié),故可用16進(jìn)制編碼表示)Java語言中還允許使用轉(zhuǎn)義字符來將其后的字符轉(zhuǎn)變?yōu)槠渌暮xchar c2 = n; 如n代表換行,r代表回車,代表反斜杠 整型:類 型占用存儲空間表數(shù)范圍 byte 1字節(jié) -128 127 short 2字節(jié) -2的15次方 2的15次方-1 int 4字節(jié) -2的31次方 2的31次方-1 long 8字節(jié) -2的63次方 2的63次方-1 Java語言整數(shù)常量的三種表示形式: 十進(jìn)制整數(shù),如12, -314, 0。 八進(jìn)制整數(shù),要求以0開頭,如012 十六進(jìn)制數(shù),要求0x或0X開頭,如0x12 Java語言的整型常量默認(rèn)為int型,如:int i =3;聲明long型常量可以后加 l 或 L ,如:long l = 3L;浮點(diǎn)型:Java浮點(diǎn)類型常量有兩種表示形式十進(jìn)制數(shù)形式,必須含有小數(shù)點(diǎn),例如: 3.14 314.0 .314 科學(xué)記數(shù)法形式,如 3.14e2 3.14E2 314E2 Java浮點(diǎn)型常量默認(rèn)為double型,如要聲明一個(gè)常量為float型,則需在數(shù)字后面加f或F,如: double d = 3.14;float f = 3.14f;float 占4個(gè)字節(jié),double占8個(gè)字節(jié)范例代碼VariableTest.java:Java中變量的定義class VariableTestpublic static void main (String args ) boolean b = true; /聲明boolean型變量并賦值 int x, y=8; / 聲明int型變量float f = 4.5f; / 聲明float型變量并賦值double d = 3.1415; /聲明double型變量并賦值char c; /聲明char型變量c =u0031;/為char型變量賦值 x = 010; /為int型變量賦值 System.out.println(b= + b);System.out.println(x= + x);System.out.println(y= + y);System.out.println(f= + f);System.out.println(d= + d);System.out.println(c= + c);2.3 基本數(shù)據(jù)類型轉(zhuǎn)換除了布爾型數(shù)據(jù)外,字符型 整型的數(shù)據(jù)和浮點(diǎn)類型的數(shù)據(jù)可以混合在一起進(jìn)行運(yùn)算,不同類型數(shù)據(jù)運(yùn)算的結(jié)果是何種類型的呢?數(shù)據(jù)可由一種類型轉(zhuǎn)換成另一種類型嗎?在這一講里這些疑問都將得到解決。1整型和浮點(diǎn)類型都可看作是數(shù)值型數(shù)據(jù),當(dāng)不同的數(shù)值型數(shù)據(jù)運(yùn)算時(shí),有一個(gè)內(nèi)在的規(guī)則:先統(tǒng)一為同一類型,再進(jìn)行運(yùn)算。結(jié)果就為運(yùn)算前統(tǒng)一的類型。這里的“統(tǒng)一”就是自動(dòng)類型轉(zhuǎn)換。自動(dòng)類型數(shù)據(jù)轉(zhuǎn)換總是從低級到高級進(jìn)行,byte、char、short的級別最低,double的級別最高;范例:定義如下幾個(gè)變量:int x, byte y, long z, float a, double b, char c;分析:x + y的結(jié)果應(yīng)為int型,x + y + z的結(jié)果為long型,a + b的結(jié)果為double型,a - x - y的結(jié)果為float型,x + c的結(jié)果為int型。2欲讓高級數(shù)據(jù)轉(zhuǎn)換成低級數(shù)據(jù),需用到強(qiáng)制類型轉(zhuǎn)換,其形式如intx=(int)3.5;class TypeConvertTestpublic static void main (String args ) char c1 = a;System.out.println(c1= + c1 + 1); /輸出c1=a1System.out.println(c1 + 1); /輸出a的ASC碼值97+1=982.4 運(yùn)算符算術(shù)運(yùn)算符: +,*,/,%,+,關(guān)系運(yùn)算符: ,=,=,=,!=布爾邏輯運(yùn)算符: !,& , | , , &,|賦值運(yùn)算符: = 擴(kuò)展賦值運(yùn)算符:+=,=,*=,/=字符串連接運(yùn)算符: + 邏輯運(yùn)算符邏輯運(yùn)算符功能!- 邏輯非& - 邏輯與 | - 邏輯或 - 邏輯異或&- 短路與 | - 短路或邏輯運(yùn)算符功能說明:ab!aa&ba|baba&ba|btruetrue falsetruetruefalsetruetruetruefalsefalsefalsetruetruefalsetruefalsetruetruefalsetruetruefalsetruefalsefalsetruefalsefalsefalsefalsefalse短路邏輯運(yùn)算符應(yīng)用& - 第一個(gè)操作數(shù)為假則不判斷第二個(gè)操作數(shù) | - 第一個(gè)操作數(shù)為真則不判斷第二個(gè)操作數(shù)字符串連接符:+運(yùn)算符兩側(cè)的操作數(shù)中只要有一個(gè)是字符串(String)類型,系統(tǒng)會(huì)自動(dòng)將另一個(gè)操作數(shù)轉(zhuǎn)換為字符串然后再進(jìn)行連接int i = 300 +5;String s = hello, + i + 號;System.out.println(s); /輸出:hello, 305號條件運(yùn)算符:三目條件運(yùn)算符,語法格式:x ? y : z其中x為boolean類型表達(dá)式,先計(jì)算x的值,若為true,則整個(gè)三目運(yùn)算的結(jié)果為表達(dá)式y(tǒng)的值,否則整個(gè)運(yùn)算結(jié)果為表達(dá)式z的值。舉例:int score = 50;int result = x 60 ? 60: x;String type = score 60 ? 不及格 : 及格;2.5 分支結(jié)構(gòu)之ifif (條件表達(dá)式) else if (條件表達(dá)式) else if (條件表達(dá)式) else 練習(xí):寫一方法,在調(diào)用時(shí)通過參數(shù)輸入年號,判斷是否為閏年。算法: 根據(jù)閏年的判斷條件當(dāng)年號能被4整除但不能被100整除時(shí), 為閏年。當(dāng)年號能被400整除時(shí), 為閏年。2.6 分支結(jié)構(gòu)之switch caseswitch(變量) case 常量1:表達(dá)式;break;case 常量2:表達(dá)式;break;default:表達(dá)式;注意: case后面的常量必須是整數(shù)或字符型;通常在每一個(gè)case中都應(yīng)使用break語句提供一個(gè)出口,使流程跳出開關(guān)語句。switch中的表達(dá)式結(jié)果必須是一個(gè)整型值,該值用來與后續(xù)的值1、值2、值n比較,如果值是相同的,則執(zhí)行case后的語句組。之后不再判斷,連續(xù)地執(zhí)行下去,直到遇到break語句或switch運(yùn)行完畢練習(xí):輸入一百分制成績,輸出對應(yīng)的等級。90100分的等級為A?089分的等級為B?079分的等級為C?069分的等級為D?60分以下的等級為E2.7 循環(huán)結(jié)構(gòu)l 循環(huán)語句功能在循環(huán)條件滿足的情況下,反復(fù)執(zhí)行特定代碼l 循環(huán)語句的四個(gè)組成部分初始化部分(init_statement)循環(huán)條件部分(test_exp) 循環(huán)體部分(body_statement) 迭代部分(alter_statement) l 循環(huán)語句分類for 循環(huán)while 循環(huán)do/while 循環(huán)2.8 循環(huán)結(jié)構(gòu)之for循環(huán)public class HelloWorld public static void main(String args) int i,sum = 0;for(i=1; i=100; i+) sum += i;System.out.println(sum);2.9 循環(huán)結(jié)構(gòu)之while循環(huán)public class HelloWorld public static void main(String args) int i = 1,sum = 0;while(i=100) sum += i;i+;System.out.println(sum=+sum);2.10 循環(huán)結(jié)構(gòu)之do while()先執(zhí)行循環(huán)體,再判斷條件public class HelloWorld public static void main(String args) int i = 1,sum = 0;dosum += i;i+;while (iapp-dao目錄下。Java的訪問控制符分兩類:1 類:類只能被public或default(默認(rèn) 什么都不寫)修飾。2 屬性和方法:以下四個(gè)。同一類中同一包中 同一子類中 通用(其它)private Yesdefault Yes Yes protected Yes Yes Yes public Yes Yes Yes Yesfinal關(guān)鍵字:final可以修飾成員變量、方法和類;不能修飾構(gòu)造方法;final修飾的變量為常量,一旦賦值不可更改;final修飾的方法不能被子類覆蓋;final修飾的類不能被繼承,因此類成員默認(rèn)都是final類型的 因?yàn)闆]機(jī)會(huì)被覆蓋;當(dāng)函數(shù)參數(shù)為final類型時(shí),你可以讀取使用該參數(shù),但是無法改變該參數(shù)的值。4.7 基本數(shù)據(jù)類型的包裝類(Wrapper Class)每個(gè)基本數(shù)據(jù)類型都對應(yīng)一個(gè)包裝類,用于對象的操作;需要在 基本類型如int包裝類IntegerString之間 互轉(zhuǎn);public class WrapperTest public static void main(String args) /1 字符串轉(zhuǎn)成 intint i1 = Integer.parseInt(1);int i2 = Integer.valueOf(2).intValue();/2 字符串轉(zhuǎn)成IntegerInteger i3 = Integer.valueOf(3);Integer i4 = new Integer(4);/3 int轉(zhuǎn)成字符串String s1 = String.valueOf(1);String s2 = Integer.toString(2);String s3 = + 3;/4 int轉(zhuǎn)成IntegerInteger integer1 = new Integer(4);/5 Integer轉(zhuǎn)成字符串String s4 = integer1.toString();/6 Integer轉(zhuǎn)成intint i5 = Value();4.8 =和equalsequals被用來檢測兩個(gè)對象是否相等,即兩個(gè)對象的內(nèi)容是否相等;=檢測基本數(shù)據(jù)類型,只要值相等,結(jié)果即為true; 而在比較引用類型時(shí),則是比較引用是否指向同一個(gè)對象,是則為true;參照TestEqualsString.java4.9 內(nèi)部類內(nèi)部類:放在一個(gè)類的內(nèi)部定義的類就叫內(nèi)部類。分為靜態(tài)和非靜態(tài)內(nèi)部類。內(nèi)部類類似于外部類的一個(gè)屬性;作用:l 可以很好的實(shí)現(xiàn)隱藏,一般的類是不允許有private protected修飾的,內(nèi)部類則可以;InnerTest1.javal 內(nèi)部類可以訪問外部類的所有成員;l 可以實(shí)現(xiàn)多重繼承;InnerTest2.javal 可以避免修改接口而實(shí)現(xiàn)同一類中兩種同名方法的調(diào)用。內(nèi)部類和外部類互訪規(guī)則:l 外部類可以訪問內(nèi)部類的私有成員變量,反之也可;l 非靜態(tài)內(nèi)部類只能含有非靜態(tài)成員,可直接訪問外部類成員,如遇同名變量,用 “外部類名.this.屬性” 去訪問;l 外部類按照常規(guī)方式訪問非靜態(tài)內(nèi)部類,如以下格式;/適合外部類的非靜態(tài)方法InnerClass innerClass = new InnerClass();innerClass.i = 1;innerClass.methodA();/適合外部類的靜態(tài)方法(必須將內(nèi)部類對象指向一個(gè)外部類實(shí)例的引用)OuterClass outerClass = new OuterClass();InnerClass innerClass = outerClass.new InnerClass();innerClass.i = 1;innerClass.methodA();l 靜態(tài)內(nèi)部類可含有靜態(tài)和非靜態(tài)成員(和非靜態(tài)內(nèi)部類的區(qū)別),非靜態(tài)方法可直接訪問外部類的靜態(tài)成員,訪問外部類非靜態(tài)成員需new外部類實(shí)例;靜態(tài)方法直接訪問外部類靜態(tài)方法,需創(chuàng)建外部類實(shí)例訪問外部非靜態(tài)方法;l 外部類訪問靜態(tài)內(nèi)部類成員,如:OuterClass1.InnerClass2 inner2 = new OuterClass1.InnerClass2();inner2.i = 10;inner2.pay();OuterClass1.InnerClass2.methodS(); /此句只針對訪問靜態(tài)內(nèi)部類的靜態(tài)方法匿名(anonymous)內(nèi)部類:有時(shí)候不需要內(nèi)部類的對象名,即無名的內(nèi)部類;當(dāng)一個(gè)內(nèi)部類的類聲名只是在創(chuàng)建此類對象時(shí)用了一次,而且要產(chǎn)生的新類需繼承于一個(gè)已有的父類或?qū)崿F(xiàn)一個(gè)接口,才考慮用匿名類。方法中的類稱為局部內(nèi)部類,該類只在本方法中有效,而且只能訪問方法中的final成員;D5:異常處理5.1 異常的概念Java程序運(yùn)行過程中所發(fā)生的異常事件可分為兩類:l 錯(cuò)誤(Error):JVM系統(tǒng)內(nèi)部錯(cuò)誤、資源耗盡等嚴(yán)重情況;l 異常(Exception): 其它因編程錯(cuò)誤或偶然的外在因素導(dǎo)致的問題,例如:數(shù)組越界 空指針訪問試圖讀取不存在的文件網(wǎng)絡(luò)連接中斷5.2 異常的層次異常包括1 Runtime運(yùn)行時(shí)異常如數(shù)組越界 算數(shù)異常2 非運(yùn)行時(shí)異常如IO文件未找到異常,此類異常必須在方法中聲明或捕捉。5.3 try catch捕獲異常try./可能產(chǎn)生違例的代碼catch( ExceptionName1 e )./當(dāng)產(chǎn)生ExceptionName1型違例時(shí)的處置措施catch( ExceptionName2 e ). /當(dāng)產(chǎn)生ExceptionName2型違例時(shí)的處置措施 finally. /無條件執(zhí)行的語句 try 指明異??赡馨l(fā)生的范圍;catch 指明對異常進(jìn)行處理的代碼;finally 提供一個(gè)最終出口,無論有無異常,都會(huì)輸出finally中的代碼??蛇x。getMessage() 用來獲取異常相關(guān)信息;printStackTrace() 用來打印堆棧信息。5.4 用throws聲明拋出異常異常處理的第二種方式:表明該方法將不對這些異常進(jìn)行處理,而由該方法的調(diào)用者負(fù)責(zé)處理。5.5 throw關(guān)鍵字throw關(guān)鍵字允許在方法內(nèi)部主動(dòng)拋出自定義的異常。throw和throws的區(qū)別:1 兩者位置不同,throw在方法內(nèi)部,而throws在方法聲明處;2 throw主動(dòng)拋出自定義異常類的對象,throws聲明一個(gè)方法可能拋出的異常,但自己不處理,由方法的調(diào)用者處理異常;3 throw拋出的是對象,throws拋出的是類。 另外,在子類中,如果要覆蓋父類的一個(gè)方法,或父類中的方法聲明了throws異常,則子類的方法也可以拋出異常,但切記子類方法拋出的異常只能是父類方法拋出的異常的同類或子類。D6:多線程6.1 了解進(jìn)程和線程一個(gè)線程就是一個(gè)程序內(nèi)部的一條執(zhí)行線索,是比進(jìn)程更小的單元。多進(jìn)程: 在操作系統(tǒng)中能同時(shí)運(yùn)行多個(gè)任務(wù)(程序),比如操作系統(tǒng)可以同時(shí)運(yùn)行多個(gè)軟件。一個(gè)進(jìn)程可以包含一個(gè)或多個(gè)線程多線程: 。多線程的優(yōu)點(diǎn):1 程序的吞吐量更大;2 有多個(gè)CPU的系統(tǒng),可以并發(fā)運(yùn)行不同的線程。6.2 實(shí)現(xiàn)多線程的兩種方式可通過繼承Thread類和實(shí)現(xiàn)Runnable接口兩種方式實(shí)現(xiàn)多線程。繼承Thread類方式:1 編寫子類繼承Thread類,重寫run方法,將需要在新線程上運(yùn)行的代碼放在run方法中;2 要想啟動(dòng)線程不是直接調(diào)用run方法,而是調(diào)用Thread子類對象的start方法啟動(dòng)線程;3 由于線程的代碼段在run方法中,那么該方法執(zhí)行完成后線程也就結(jié)束了,因而我們可以通過控制run方法中的循環(huán)條件來控制線程的結(jié)束。如 Thread子類 對象名 = new Thread子類(); /繼承方式見范例ThreadDemo1.java實(shí)現(xiàn)Runnable接口方式:1 編寫子類實(shí)現(xiàn)Runnable接口,將需多線程運(yùn)行的代碼放在run方法中;2 實(shí)例化子類對象,將其傳給Thread類的構(gòu)造方法,如Thread t1 = new Thread(Runnable接口子類對象); 見范例ThreadDemo2.java推薦使用接口形式實(shí)現(xiàn)多線程:1 接口比繼承更方便; 2 接口可以實(shí)現(xiàn)數(shù)據(jù)共享(如3個(gè)售票員同時(shí)售100張票的情形);見范例ThreadDemo1.java見范例TicketsDemo1.java(繼承) TicketsDemo2.java(接口) TicketsDemo3.java(sleep引發(fā)的意外) 模擬鐵路售票系統(tǒng)。setDaemon(true)方法可將調(diào)用該方法的線程變?yōu)楹笈_線程(也叫守護(hù)線程),必須在調(diào)用start方法前,否則為拋出異常;當(dāng)只有后臺線程時(shí),JVM就可以退出了。tt.join()把tt對應(yīng)的線程合并到調(diào)用tt.join()語句的線程中。見范例JoinThreadDemo.java6.3 線程的生命周期1 創(chuàng)建狀態(tài):當(dāng)用new操作符創(chuàng)建一個(gè)新的線程對象時(shí),該線程處于創(chuàng)建狀態(tài)。2 可運(yùn)行狀態(tài):執(zhí)行線程的start()方法將為線程分配必須的系統(tǒng)資源,安排其運(yùn)行,并調(diào)用線程體run()方法,這樣就使得該線程處于可運(yùn)行( Runnable )狀態(tài)。3 運(yùn)行中狀態(tài):Java運(yùn)行系統(tǒng)通過調(diào)度選中一個(gè)Runnable的線程,使其占有CPU并轉(zhuǎn)為運(yùn)行中狀態(tài)(Running).此時(shí),系統(tǒng)真正執(zhí)行線程的run()方法.4 阻塞狀態(tài):一個(gè)正在運(yùn)行的線程因某種原因不能繼續(xù)運(yùn)行時(shí),進(jìn)入阻塞狀態(tài)(Blocked),比如調(diào)用了sleep()或wait()方法5 消亡狀態(tài):線程結(jié)束后是消亡狀態(tài);6.4 多線程的同步1 為什么要引入同步機(jī)制?在多線程環(huán)境中,可能會(huì)有兩個(gè)甚至更多的線程試圖同時(shí)訪問一個(gè)有限的資源。必須對這種潛在資源沖突進(jìn)行預(yù)防。解決方法:在線程使用一個(gè)資源時(shí)為其加鎖即可。訪問資源的第一個(gè)線程為其加上鎖以后,其他線程便不能再使用那個(gè)資源,除非被解鎖。2 怎樣實(shí)現(xiàn)同步對于訪問某個(gè)關(guān)鍵共享資源的所有方法,都必須把它們設(shè)為synchronized例如:同步代碼塊synchronized /* . */ 同步方法synchroni

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論