亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java中實現線程的超時中斷方法實例

2024-07-14 08:41:18
字體:
來源:轉載
供稿:網友

背景

之前在實現熔斷降級組件時,需要實現一個接口的超時中斷,意思是,業務在使用熔斷降級功能時,在平臺上設置了一個超時時間,如果在請求進入熔斷器開始計時,并且接口在超時時間內沒有響應,則需要提早中斷該請求并返回。

比如正常下游接口的超時時間為800ms,但是因為自身業務的特殊需求,最多只能等200ms,如果200ms之內沒有數據返回,則返回降級數據。這里處理請求的線程可以看成是tomcat線程池中的一個線程,如果通過線程池返回的Future,可以很輕松的實現超時返回,但是這種情況下,并不能拿到Futrue,需要換一種思路。

思路

中斷一個線程的思路有哪些?

除了已經廢棄的Thread.stop, Thread.suspend, Thread.resume 方法,剩下的貌似只有一種方案了,就是調用當前線程的 interrupt() ,但是這個方法的作用并不是中斷線程,而是設置一個標識,通知該線程可以被中斷了,到底是繼續執行,還是中斷返回,由線程本身自己決定。

具體來說,當對一個線程調用了 interrupt() 之后,如果該線程處于被阻塞狀態(比如執行了wait、sleep或join等方法),那么會立即退出阻塞狀態,并拋出一個 InterruptedException 異常,在代碼中catch這個異常進行后續處理。如果線程一直處于運行狀態,那么只會把該線程的中斷標志設置為 true,僅此而已,所以 interrupt() 并不能真正的中斷線程,不過在rpc調用的場景中,請求線程一般都處于阻塞狀態,等待數據返回,這時 interrupt() 方法是可以派上用場的。

那么,要實現指定超時時間內中斷請求線程,還有最后一個問題需要解決:什么時候,由誰去執行 interrupt() 方法?

必然這個方法只能由其它線程來執行了(自己都阻塞了,執行個鬼),而且是在請求進入熔斷器時,并在超時時間之后執行,有點繞,比如超時時間是200ms,那么請求進入熔斷器之后,再過200ms,就執行 interrupt() ,但是在200ms之內有數據返回,那么就不執行 interrupt() 了。

實現

需求已經很明確了,相當于延遲執行一個task,其內部邏輯就是執行請求線程的 interrupt() ,當然還有其它的邏輯。

Runnable task = new Runnable() { @Override public void run() {  try {   thread.interrupt();   // 取消定時器任務   f.cancel();  } catch (Exception e) {   logger.error("Failed while ticking TimerListener", e);  } }};

Doug Lea大神提供的 ScheduledThreadPoolExecutor 可以很好的滿足這個需求,通過 scheduleAtFixedRate 方法可以很方便的實現在延遲指定時間之后執行提交的任務。

ScheduledFuture<?> f = executor.scheduleAtFixedRate(task, timeout, timeout, TimeUnit.MILLISECONDS);

在請求進入熔斷器時,順便提交一個任務到線程池中等待執行,如果接口在超時時間內沒有返回,那么該任務會被觸發,并執行請求線程的 interrupt 方法,這樣就實現了請求線程的中斷(因為這時請求線程正在被阻塞,等待數據返回),另外需要清空定時任務,不然這個任務會一直執行。

如果接口正常返回了,也要記得清空定時任務,并且在請求退出熔斷器的時候,記得恢復請求線程的中斷標識,如何恢復?在請求線程中執行下面代碼即可。

Thread.interrupted();// 內部邏輯public static boolean interrupted() { return currentThread().isInterrupted(true);}// 參數為true,可以清除中斷標識private native boolean isInterrupted(boolean ClearInterrupted);

執行當前線程(即請求線程)的isInterrupted方法。

使用這種方式實現請求的超時中斷,在QPS很高的情況下,會有額外的性能損失,因為每次請求都要提交一個任務到線程池中等待執行。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲色图色老头| 狠狠色狠狠色综合日日五| 国产999在线观看| 日韩大片免费观看视频播放| 日韩欧美在线观看| 亚洲精品视频中文字幕| 视频一区视频二区国产精品| 国产精品扒开腿爽爽爽视频| 狠狠久久五月精品中文字幕| 亚洲精品福利在线| 久久久久久亚洲精品中文字幕| 欧美综合一区第一页| 精品国产欧美成人夜夜嗨| 国产成人精品免高潮在线观看| 久久久久久亚洲| 日韩中文在线中文网三级| 久久免费国产精品1| 国产91亚洲精品| 成人久久一区二区三区| 欧美极品美女电影一区| 欧美一级在线播放| 欧美成人激情视频免费观看| 性欧美xxxx交| 亚洲第一视频网站| 日韩精品视频在线观看网址| 日韩精品免费在线观看| 在线观看日韩专区| 成人网在线视频| 精品久久久久久亚洲国产300| 成人黄色影片在线| 成人午夜小视频| 国产精品午夜国产小视频| 超薄丝袜一区二区| 欲色天天网综合久久| 成人精品一区二区三区电影黑人| 欧美国产视频一区二区| 国产www精品| 欧美一级高清免费| 麻豆乱码国产一区二区三区| 色777狠狠综合秋免鲁丝| 在线亚洲午夜片av大片| 亚洲精品一区二区久| 91久久在线播放| 欧洲亚洲在线视频| 亚洲精品97久久| 日本午夜在线亚洲.国产| 精品视频www| 韩国福利视频一区| 在线电影欧美日韩一区二区私密| 国产成人精品日本亚洲专区61| 久久久视频精品| 这里只有精品视频在线| 欧美激情精品久久久| 亚洲精品美女网站| 45www国产精品网站| 亚洲欧美中文字幕| 日韩精品免费在线| 欧美激情视频在线观看| www.美女亚洲精品| 日本国产一区二区三区| 91久久久久久| 国产精品久久久久7777婷婷| 国产免费久久av| 国产精品爽黄69天堂a| 亚洲成人黄色在线| 一本色道久久综合亚洲精品小说| 国产日本欧美在线观看| 国产精品欧美日韩久久| 欧美在线xxx| 精品国偷自产在线视频| 国产精品视频一区二区高潮| 亚洲摸下面视频| 亚洲自拍另类欧美丝袜| 成人午夜在线影院| 久久精品国产免费观看| 色综合伊人色综合网| 91高清视频免费观看| 国产精品人成电影| 日韩在线观看网址| 国产精品丝袜久久久久久不卡| 另类色图亚洲色图| 亚洲国产成人在线视频| 国产日本欧美一区二区三区| 黑人巨大精品欧美一区二区一视频| 国产在线精品自拍| 亚洲日本中文字幕| 欧美寡妇偷汉性猛交| 国产成人精彩在线视频九色| 成人夜晚看av| 日韩精品极品视频免费观看| 亚洲综合中文字幕在线观看| 欧美视频一二三| 97香蕉超级碰碰久久免费的优势| 98精品国产自产在线观看| 亚洲午夜性刺激影院| 欧美亚洲另类视频| 久久久久国色av免费观看性色| 亚洲精品色婷婷福利天堂| 亚洲视频第一页| 一本一本久久a久久精品牛牛影视| 2019亚洲男人天堂| 久久伊人精品天天| 欧美性做爰毛片| 精品综合久久久久久97| 久久久精品一区二区| 日韩国产高清视频在线| 亚洲自拍偷拍第一页| 亚洲天堂男人天堂| 91久久久久久久久久久久久| 亚洲精品视频网上网址在线观看| 久久久久久久久久av| 日韩视频在线一区| 亚洲色图校园春色| 国产精品久久久久久网站| 自拍偷拍亚洲一区| 国产精品久久97| 亚洲嫩模很污视频| 亚洲视频精品在线| 久久综合国产精品台湾中文娱乐网| 国产日韩亚洲欧美| 一区二区亚洲欧洲国产日韩| 欧美高清性猛交| 亚洲人成网站777色婷婷| 中文字幕亚洲欧美在线| 亚洲第一精品福利| 亚洲第一区中文字幕| 国产97色在线|日韩| 亚洲永久免费观看| 91在线视频成人| 夜夜躁日日躁狠狠久久88av| 国产精品视频播放| 欧美伊久线香蕉线新在线| 国产亚洲精品美女| 欧美老女人xx| 亚洲精品视频在线观看视频| 欧美一二三视频| 日韩免费观看网站| 揄拍成人国产精品视频| 欧美有码在线观看视频| 亚洲国产成人精品一区二区| 日本久久久久久久| 日韩欧美成人免费视频| 久久综合久久88| 国产情人节一区| 97精品伊人久久久大香线蕉| 久久久成人精品| 国产福利成人在线| 国产69精品久久久久9999| 国内精品视频久久| 欧美激情久久久久| 亚洲欧美一区二区三区情侣bbw| 欧美激情免费在线| 国产精品福利在线观看| 欧美大成色www永久网站婷| 欧美激情日韩图片| 日韩中文字幕在线| 亚洲激情第一页| 丝袜美腿精品国产二区| 九色91av视频| 亚洲国产精品久久久久久| 精品欧美国产一区二区三区| 日韩免费在线免费观看| 日韩一区二区精品视频| 91精品久久久久久久久久另类|