so true

          心懷未來,開創未來!
          隨筆 - 160, 文章 - 0, 評論 - 40, 引用 - 0
          數據加載中……

          線程方法interrupt的說明

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

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

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

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

          主站蜘蛛池模板: 攀枝花市| 鲁甸县| 文山县| 陵水| 弥渡县| 开封县| 华安县| 筠连县| 克拉玛依市| 临潭县| 松江区| 汪清县| 集安市| 崇礼县| 宁晋县| 河北区| 渭南市| 盈江县| 湘阴县| 平阴县| 阿拉善左旗| 衡东县| 诸城市| 云和县| 汾西县| 乐业县| 依安县| 和硕县| 诸城市| 东乡族自治县| 凤翔县| 永清县| 池州市| 习水县| 南和县| 阿克| 黔西| 长治市| 科技| 运城市| 健康|