一、stop
stop方法不推荐调用,官方说发是“可能发生不可预测的问题”。其实线程在调用stop方法后,会停止自己。线程停止的时候,会直接停止执行,并释放自己正在使用的锁资源。问题出在这里,如果线程拿到锁,只执行了几步,还剩几步没有执行完,如果此时释放锁,其他线程重新接管,可能导致线程不安全的事情发生。并且这种问题几乎无法Debug。
二、suspend和resume方法
这两个方法必须要成对出现,否则非常容易发生死锁,因为suspend方法并不会释放锁。如果不能保证之后会有人调用resume方法,会导致线程永远挂起。其次,suspend和resume方法通常不一定是一个线程来顺序执行。有可能一个线程来suspend另一个线程来resume,而如果没有处理好线程间的调用顺序,非常可能发生,resume发生在suspend之前,这样又会导致线程suspend之后,永远没有人来resume他,发生“线程冻结”的场景。
时间: 2024-11-05 11:47:57