电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Java 停止線程需要注意的地方

瀏覽:2日期:2022-08-25 09:06:36

Java中停止線程的原則是什么?

在 Java 中, 最好的停止線程的方式是使用中斷 interrupt, 但是這僅僅是會通知到被終止的線程 '你該停止運行了', 被終止的線程自身擁有決定權 (決定是否、以及何時停止), 這依賴于請求停止方和被停止方都遵守一種約定好的編碼規范.

任務和線程的啟動很容易. 在大多數時候, 我們都會讓它們運行直到結束, 或者讓它們自行停止.然而, 有時候我們希望提前結束任務或線程, 或許是因為用戶取消了操作,或者服務需要被快速關閉, 或者是運行超時或出錯了. 要使任務和線程能安全、快速、可靠地停止下來, 并不是一件容易的事. Java沒有提供任何機制來安全地終止線程. 但它提供了中斷 (Interruption), 這是一種協作機制,能夠使一個線程終止另一個線程的當前工作. 這種協作式的方法是必要的, 我們很少希望某個任務、線程或服務立即停止,因為這種立即停止會使共享的數據結構處于不一致的狀態. 相反, 在編寫任務和服務時可以使用一種協作的方式: 當需要停止時,它們首先會清除當前正在執行的工作, 然后再結束. 這提供了更好的靈活性, 因為任務本身的代碼比發出取消請求的代碼更清楚如何執行清除工作. 生命周期結束 (End-of-Lifecycle) 的問題會使任務、服務以及程序的設計和實現等過程變得復雜, 而這個在程序設計中非常重要的要素卻經常被忽略. 一個在行為良好的軟件與勉強運的軟件之間的最主要區別就是, 行為良好的軟件能很完善地處理失敗、關閉和取消等過程.

處理中斷的最好方法是什么?

優先選擇在方法上拋出異常.

用 throws InterruptedException 標記你的方法, 不采用 try 語句塊捕獲異常,以便于該異常可以傳遞到頂層, 讓run方法可以捕獲這一異常, 例如:

void subTask() throws InterruptedExceptionsleep(delay);}

由于 run 方法內無法拋出 checked Exception (只能用 try catch), 頂層方法必須處理該異常, 避免了漏掉或者被吞掉的情況, 增強了代碼的健壯性.

如果不能拋出中斷, 要怎么做?

如果不想或無法傳遞 InterruptedException (例如用 run 方法的時候, 就不讓該方法 throws InterruptedException), 那么應該選擇在 catch 子句中調用 Thread.currentThread().interrupt() 來恢復設置中斷狀態, 以便于在后續的執行依然能夠檢查到剛才發生了中斷.

代碼演示詳見視頻, 在這里, 線程在sleep期間被中斷, 并且由 catch 捕獲到該中斷, 并重新設置了中斷狀態, 以便于可以在下一個循環的時候檢測到中斷狀態, 正常退出.

為什么用 volatile 停止線程不夠全面?

解答: 這種做法是錯誤的, 或者說是不夠全面的, 在某些情況下雖然可用, 但是某些情況下有嚴重問題。

這種方法在《Java并發編程實戰》中被明確指出了缺陷, 我們一起來看看缺陷在哪里:

此方法錯誤的原因在于, 如果我們遇到了線程長時間阻塞 (這是一種很常見的情況, 例如生產者消費者模式中就存在這樣的情況), 就沒辦法及時喚醒它, 或者永遠都無法喚醒該線程, 而 interrupt 設計之初就是把 wait 等長期阻塞作為一種特殊情況考慮在內了, 我們應該用 interrupt 思維來停止線程.

以上就是Java 停止線程需要注意的地方的詳細內容,更多關于Java 停止線程的資料請關注好吧啦網其它相關文章!

標簽: Java
相關文章:
主站蜘蛛池模板: vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 优宝-汽车润滑脂-轴承润滑脂-高温齿轮润滑油脂厂家 | 杭州双螺杆挤出机-百科| 不锈钢闸阀_球阀_蝶阀_止回阀_调节阀_截止阀-可拉伐阀门(上海)有限公司 | 挤奶设备过滤纸,牛奶过滤纸,挤奶机过滤袋-济南蓝贝尔工贸有限公司 | 琉璃瓦-琉璃瓦厂家-安徽盛阳新型建材科技有限公司 | 金刚网,金刚网窗纱,不锈钢网,金刚网厂家- 河北萨邦丝网制品有限公司 | 煤机配件厂家_刮板机配件_链轮轴组_河南双志机械设备有限公司 | 电动高尔夫球车|电动观光车|电动巡逻车|电动越野车厂家-绿友机械集团股份有限公司 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛调查出轨取证公司_青岛婚外情取证-青岛探真调查事务所 | 天津力值检测-天津管道检测-天津天诚工程检测技术有限公司 | 南京交通事故律师-专打交通事故的南京律师| elisa试剂盒-PCR试剂盒「上海谷研实业有限公司」 | 宜兴紫砂壶知识分享 - 宜兴壶人| 上海公众号开发-公众号代运营公司-做公众号的公司企业服务商-咏熠软件 | 周易算网-八字测算网 - 周易算网-宝宝起名取名测名字周易八字测算网 | 蒜肠网-动漫,二次元,COSPLAY,漫展以及收藏型模型,手办,玩具的新媒体.(原变形金刚变迷TF圈) | arch电源_SINPRO_开关电源_模块电源_医疗电源-东佑源 | 政府园区专业委托招商平台_助力企业选址项目快速落地_东方龙商务集团 | 长江船运_国内海运_内贸船运_大件海运|运输_船舶运输价格_钢材船运_内河运输_风电甲板船_游艇运输_航运货代电话_上海交航船运 | 电位器_轻触开关_USB连接器_广东精密龙电子科技有限公司 | 工业冷却塔维修厂家_方形不锈钢工业凉水塔维修改造方案-广东康明节能空调有限公司 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 冷库安装厂家_杭州冷库_保鲜库建设-浙江克冷制冷设备有限公司 | 广州企亚 - 数码直喷、白墨印花、源头厂家、透气无手感方案服务商! | 短信通106短信接口验证码接口群发平台_国际短信接口验证码接口群发平台-速度网络有限公司 | 食品无尘净化车间,食品罐装净化车间,净化车间配套风淋室-青岛旭恒洁净技术有限公司 | 不锈钢列管式冷凝器,换热器厂家-无锡飞尔诺环境工程有限公司 | 交联度测试仪-湿漏电流测试仪-双85恒温恒湿试验箱-常州市科迈实验仪器有限公司 | 模具钢_高速钢_不锈钢-万利钢金属材料| 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 滑板场地施工_极限运动场地设计_滑板公园建造_盐城天人极限运动场地建设有限公司 | 车间除尘设备,VOCs废气处理,工业涂装流水线,伸缩式喷漆房,自动喷砂房,沸石转轮浓缩吸附,机器人喷粉线-山东创杰智慧 | 高楼航空障碍灯厂家哪家好_航空障碍灯厂家_广州北斗星障碍灯有限公司 | 深圳市八百通智能技术有限公司官方网站 | 硬度计_影像测量仪_维氏硬度计_佛山市精测计量仪器设备有限公司厂家 | 特种阀门-调节阀门-高温熔盐阀-镍合金截止阀-钛阀门-高温阀门-高性能蝶阀-蒙乃尔合金阀门-福建捷斯特阀门制造有限公司 | 亚克力制品定制,上海嘉定有机玻璃加工制作生产厂家—官网 | 北京康百特科技有限公司-分子蒸馏-短程分子蒸馏设备-实验室分子蒸馏设备 | 安徽集装箱厂-合肥国彩钢结构板房工程有限公司 | 衡阳耐适防护科技有限公司——威仕盾焊接防护用品官网/焊工手套/焊接防护服/皮革防护手套 |