so true

          心懷未來,開創(chuàng)未來!
          隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0
          數(shù)據(jù)加載中……

          線程方法interrupt的說明

          線程的interrupt方法很特殊,有必要在這里著重說明一下。
          interrupted方法是查詢是否有“中斷狀態(tài)”這一標(biāo)志,而這一標(biāo)志很重要很重要。
          通常情況下這個標(biāo)志都是沒有被設(shè)置的,一旦這個標(biāo)志被設(shè)置了,則所有當(dāng)前正在阻塞的方法(限定在由于wait、sleep、join三種方法引發(fā)的阻塞)都會立刻完成“跳出阻塞狀態(tài)、拋出InterruptedException異常、清除中斷狀態(tài)標(biāo)志”這三件工作。仿佛線程在阻塞時(shí),總在不斷的查詢這一標(biāo)志,一旦發(fā)現(xiàn)這個標(biāo)志被設(shè)置了,那么就立刻發(fā)生上述提到的三件工作。不過這只是一種猜測,至于底層到底是如何實(shí)現(xiàn)的,我們并不知道。

          而我們調(diào)用interrupt方法也很有趣,通常這個標(biāo)志都是未被設(shè)置的,一旦調(diào)用這個方法,它就會設(shè)置這個標(biāo)志,說白了,這個方法所完成的工作也就僅僅限于設(shè)置了一個這樣的標(biāo)志。接下來就能和上一段落中提到的事情相關(guān)聯(lián)了,如果線程當(dāng)前是阻塞的狀態(tài),那么它會利用這個標(biāo)志啦,然后做“三件事情”,然后這個標(biāo)志又被清除了;如果線程當(dāng)前是非阻塞狀態(tài),那么該方法的調(diào)用也就僅僅是設(shè)置一個標(biāo)志而已,注意設(shè)置了這個標(biāo)記就和沒設(shè)置這個標(biāo)記完全不同了,一旦你再想調(diào)用sleep等阻塞方法時(shí),它們都會“立刻跳出阻塞狀態(tài)、拋出異常、清除標(biāo)記”啦,呵呵。

          至此,終于清除了interrupt方法的作用了吧?

          posted on 2008-02-23 19:13 so true 閱讀(498) 評論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 大埔县| 思南县| 玉山县| 体育| 资溪县| 开原市| 莒南县| 咸丰县| 大同县| 水城县| 武威市| 呼和浩特市| 丰都县| 临沧市| 环江| 太仆寺旗| 宜都市| 张家界市| 惠水县| 漯河市| 东阳市| 义乌市| 阳曲县| 禄劝| 永德县| 井冈山市| 井陉县| 乐至县| 海林市| 基隆市| 肇庆市| 南投市| 饶平县| 安多县| 定陶县| 澄城县| 墨江| 深州市| 南平市| 武城县| 益阳市|