原文:【線程篇】stop() 和suspend()

.為什么不推薦用 stop 和 suspend stop這個方法將終止所有未結束的方法,包括run方法。當一個線程停止時候,他會立即釋放所有他鎖住對象上的鎖。這會導致對象處於不一致的狀態。假如一個方法在將錢從一個賬戶轉移到另一個賬戶的過程中,在取款之后存款之前就停止了。那么現在銀行對象就被破壞了。因為鎖已經被釋放了。當線程想終止另一個線程的時候,它無法知道何時調用stop是安全的,何時會導致對象 ...

2013-07-02 19:41 0 3106 推薦指數:

查看詳情

線程stop()方法和suspend方法為什么不建議使用?

線程stop()方法和suspend方法為什么不建議使用? 答:不建議使用這2種方法的原因,是因為使用stop方法會強行終止線程的所有鎖定,如果對象處於一種不連貫的狀態,那么損壞的對象對其他線程可見,這有可能導致不安全的操作。 suspend方法可能會發生死鎖,所以也不建議使用 ...

Sat Feb 16 07:17:00 CST 2019 0 842
為何stop()和suspend()方法不推薦使用(轉)

stop()方法作為一種粗暴的線程終止行為,在線程終止之前沒有對其做任何的清除操作,因此具有固有的不安全性。 用Thread.stop()方法來終止線程將會釋放該線程對象已經鎖定的所有監視器。如果以前受這些監視器保護的任何對象都處於不連貫狀態,那么損壞的對象對其他線程可見,這有可能導致 ...

Wed Jul 25 06:58:00 CST 2018 0 1141
被廢棄的 Thread.stop, Thread.suspend, Thread.resume 和Runtime.runFinalizersOnExit

最近學習多線程的知識,看到API里說這些方法被廢棄了,就查了一下原因 Thread.stop 這個方法會解除被加鎖的對象的鎖,因而可能造成這些對象處於不一致的狀態,而且這個方法造成的ThreadDeath異常不像其他的檢查期異常一樣被捕獲。 可以使用interrupt方法代替。事實上 ...

Thu Aug 25 22:44:00 CST 2016 1 1564
JAVA多線程線程的掛起與恢復(suspend方法與resume方法)

一,介紹 本文討論JAVA多線程中,使用 thread.suspend()方法暫停線程,使用 thread.resume()恢復暫停的線程 的特點。 先介紹二個關於線程的基本知識: ①線程的執行體是run()方法里面的每一條語句,main線程執行的則是main()方法里面的語句 ...

Sun May 01 06:53:00 CST 2016 0 6373
Java多線程系列——過期的suspend()掛起、resume()繼續執行線程

簡述 這兩個操作就好比播放器的暫停和恢復。 但這兩個 API 是過期的,也就是不建議使用的。 不推薦使用 suspend() 去掛起線程的原因,是因為 suspend() 在導致線程暫停的同時,並不會去釋放任何鎖資源。其他線程都無法訪問被它占用的鎖。直到對應的線程執行 resume() 方法 ...

Mon Mar 06 00:59:00 CST 2017 0 9064
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM