so true

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

          線程方法interrupt的說明

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

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

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

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

          主站蜘蛛池模板: 阳江市| 阳山县| 泰顺县| 浮山县| 东阿县| 石渠县| 汽车| 娱乐| 满洲里市| 广饶县| 浏阳市| 肥西县| 岫岩| 会泽县| 淅川县| 司法| 定结县| 诏安县| 密云县| 隆回县| 平顺县| 繁昌县| 石屏县| 图木舒克市| 江陵县| 尉犁县| 沁水县| 宁国市| 古丈县| 万宁市| 札达县| 凤庆县| 乌恰县| 平山县| 万全县| 广南县| 团风县| 西乌珠穆沁旗| 项城市| 玉山县| 高雄县|