
通過注解@Deprecated看出stop方法被标為廢棄的方法,jdk在以後的版本中可能被移除,不建議大家使用這種API。
那為什麼這麼好的一個方法怎麼不推薦使用,還要标注為廢棄呢?
假設有這樣的一個業務場景,一個線程正在處理一個複雜的業務流程,突然間線程被調用stop而意外終止,這個業務資料還有可能是一緻的嗎?這樣是肯定會出問題的,stop會釋放鎖并強制終止線程,造成執行一半的線程終止,帶來的後果也是可想而知的,這就是為什麼jdk不推薦使用stop終止線程的方法的原因,因為它很暴力會帶來資料不一緻性的問題。
正因為stop方法太過暴力,是以一般不推薦使用,除非你非常清楚你自己的業務場景,用stop終止不會給你的業務帶來影響。
說了這麼多,那如何優雅地終止一個線程呢?看看下面的程式。
其實也不難,隻需要添加一個變量,判斷這個變量在某個值的時候就退出循環,這時候每個循環為一個整合不被強行終止就不會影響單個業務的執行結果。