国产美女一级毛片精品久久久|婷婷影院在线综合免费视频|最新国产午夜精品视频成人|久久精品九九无码免费

學(xué)習(xí)Java編程語(yǔ)言,三大方面要注意

來(lái)源:北大青鳥(niǎo)飛迅校區(qū)|發(fā)布時(shí)間:2013-04-22 10:57:16

  Java編程語(yǔ)言需要我們進(jìn)行相關(guān)知識(shí)的學(xué)習(xí),不少人都會(huì)說(shuō)我們要注意相關(guān)問(wèn)題的介紹。下面我們就從三方面來(lái)看看如何進(jìn)行Java編程語(yǔ)言的認(rèn)識(shí)和學(xué)習(xí)。希望大家有所收獲。

  第一個(gè)是run()與start()。翻翻以前自己寫(xiě)的代碼,是用start()啟動(dòng)線(xiàn)程的,這次居然犯糊涂用run()來(lái)跑,不出錯(cuò)才怪呢。相信有不少Java編程語(yǔ)言程序員像我一樣,在不懂的時(shí)候,就按個(gè)點(diǎn),查看方法列表,跟據(jù)方法名想當(dāng)然地理解。這種方法可以快速入手做東西,但像多線(xiàn)程這類(lèi)的東西,還是需要打牢基礎(chǔ),不然麻煩多多。

  run()只是一個(gè)普通方法,是Runnable接口定義的,用來(lái)執(zhí)行線(xiàn)程最終要做的事情的方法,它本身沒(méi)有特別之處,就像main方法一樣,啟動(dòng)一個(gè)線(xiàn)程后,run()方法會(huì)被調(diào)用。所以,run()方法沒(méi)有創(chuàng)建多線(xiàn)程,run()方法里的東西還在調(diào)用者線(xiàn)程里跑。

  start()方法是Thread類(lèi)定義的,它是真正負(fù)責(zé)啟動(dòng)一個(gè)線(xiàn)程的。調(diào)用此方法后,將會(huì)從線(xiàn)程創(chuàng)建一個(gè)新的線(xiàn)程出來(lái)(強(qiáng)調(diào)從當(dāng)前線(xiàn)程創(chuàng)建新線(xiàn)程是因?yàn)橐恍⿲傩员热鏳aemon會(huì)被繼承),然后在新線(xiàn)程執(zhí)行run()方法。

  第二個(gè)就是InterruptedException。典型地,我們?cè)趓un()方法中常用while循環(huán),并且每次循環(huán)通常有Thread.sleep(long)調(diào)用,這個(gè)sleep(long)方法會(huì)拋出InterruptedException。之前對(duì)這個(gè)異常的理解有誤,以為這是個(gè)“錯(cuò)誤”,其實(shí)這只是表示一個(gè)狀態(tài)?垂俜轿臋n有點(diǎn)拗口,簡(jiǎn)單地說(shuō),這個(gè)異常被拋出表示線(xiàn)程收到中斷請(qǐng)求(你也可以理解為線(xiàn)程正在被終止,通常是這樣,但不絕對(duì)。為了線(xiàn)程安全、保證數(shù)據(jù)的一致性,Java編程語(yǔ)言提倡用溫和手?jǐn)嘀兄咕(xiàn)程,溫和的意思就是run()方法里的代碼有機(jī)會(huì)決定什么時(shí)候退出),比如外部調(diào)用interrupt()來(lái)中斷此線(xiàn)程。sleep()收到中斷異常意味著sleep時(shí)外部發(fā)來(lái)了中斷請(qǐng)求信號(hào),這時(shí)如果沒(méi)有需要善后的操作,就可以退出while循環(huán),結(jié)束線(xiàn)程了。我以前的代碼是catch掉打一句日志,雖然正常工作了,但是卻是錯(cuò)誤的。再汗一把!

  第三個(gè)是Thread.interrupted()和thread.isInterrupted()的區(qū)別(后者thread代表Thread的一個(gè)實(shí)例)。兩者都返回線(xiàn)程的當(dāng)前狀態(tài),區(qū)別在于前者返回當(dāng)前狀態(tài)后,會(huì)復(fù)會(huì)這個(gè)狀態(tài)。比如Thread.interrupted()得了true,但此后線(xiàn)程狀態(tài)被立即置為了false。如果不想改變這一狀態(tài),可以用isInterrupted(),比如Thread.currentThread.isInterrupted()。還有就是中斷狀態(tài)是會(huì)被一些操作改變的,所以不能只用此狀態(tài)來(lái)斷段線(xiàn)程是否要退出。線(xiàn)程應(yīng)該另外設(shè)置一個(gè)退出標(biāo)記(如果需要控制線(xiàn)程的運(yùn)行與否的話(huà))。

上一篇:軟件工程師前景分析!
下一篇:如何運(yùn)用Java編寫(xiě)Oracle存儲(chǔ)過(guò)程?

熱門(mén)話(huà)題

招生熱線(xiàn): 4008-0731-86 / 0731-82186801

學(xué)校地址: 長(zhǎng)沙市天心區(qū)團(tuán)結(jié)路6號(hào)

Copyright © 2006 | 湖南大計(jì)信息科技有限公司 版權(quán)所有

湘ICP備14017520號(hào)-3

關(guān)注我們
在線(xiàn)咨詢(xún)
嘿,我來(lái)幫您!
九台市| 柳江县| 安吉县| 奉化市| 芜湖县| 桐梓县| 赣州市| 嵊泗县| 临沭县| 苏尼特右旗| 当涂县| 沂源县| 华池县| 临漳县| 龙海市| 云和县| 永康市| 邹平县| 洪泽县| 韶山市| 绥阳县| 武宁县| 上林县| 深圳市| 榆中县| 安阳县| 利川市| 赤城县| 霍山县| 青岛市| 平谷区| 延长县| 吉水县| 连州市| 文水县| 措美县| 宿州市| 太仓市| 阿克苏市| 长丰县| 延庆县|