国产探花免费观看_亚洲丰满少妇自慰呻吟_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異常。正常我們就可以在異常處理中進行后續邏輯處理,我們也因此讓進程變成了非阻塞狀態。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新巴尔虎左旗| 阳山县| 陕西省| 新民市| 池州市| 杭州市| 尼木县| 南川市| 平乐县| 图木舒克市| 榆中县| 民勤县| 维西| 溆浦县| 京山县| 社会| 吴堡县| 敖汉旗| 民丰县| 繁峙县| 咸阳市| 新绛县| 读书| 维西| 敦化市| 灵台县| 家居| 崇阳县| 玉龙| 寻甸| 盖州市| 赣州市| 托克托县| 东乡县| 鄯善县| 中西区| 营口市| 茌平县| 广安市| 班玛县| 沙坪坝区|