国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

文章標題

2019-11-08 02:38:36
字體:
來源:轉載
供稿:網友

理解

當一個線程被阻塞的時候(io, sleep等),我們取消這種阻塞,這個時候就可以使用interrupt

例子和講解

我們先看個例子,代碼入下:

package com.renzhan;class TestRunnable implements Runnable{ public void run(){ while(true) { System.out.代碼的輸出如下:

Thread is running...falseThread is running...trueThread is running...trueThread is running...trueThread is running...true

線程在調用interrupt 后,只是修改了他的狀態,對線程的工作還是沒有影響,這個是線程一直占據了cpu處于執行的狀態。那么我們把線程的狀態修改成sleep呢? 代碼如下:

class TestRunnable implements Runnable{ public void run(){ try{ Thread.sleep(1000000); //這個線程將被阻塞1000秒 }catch(InterruptedException e){ e.printStackTrace(); //do more work and return. } }}

對應的輸出如下:

java.lang.InterruptedException: sleep interrupted at java.lang.Thread.sleep(Native Method) at TestRunnable.run(App.java:6) at java.lang.Thread.run(Thread.java:745)

這個是因為線程當前處于阻塞狀態,線程沒有占用CPU,線程是不可能給自己的中斷狀態置位的。我們調用intrrupted 時候,這就會產生一個InterruptedException異常。正常我們就可以在異常處理中進行后續邏輯處理,我們也因此讓進程變成了非阻塞狀態。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汽车| 珠海市| 新邵县| 新营市| 上饶县| 鸡西市| 桐庐县| 本溪| 阿拉善左旗| 谷城县| 宝丰县| 招远市| 山阴县| 天津市| 本溪| 沅陵县| 诸暨市| 渭南市| 德化县| 石嘴山市| 宝丰县| 徐水县| 原阳县| 河西区| 阿巴嘎旗| 深圳市| 昭通市| 崇信县| 新河县| 泰来县| 无锡市| 莱西市| 鲁山县| 丹东市| 中超| 进贤县| 镇坪县| 凌云县| 河曲县| 依兰县| 舟山市|