多线程中stop()方法和suspend方法为什么不建议使用? 答:不建议使用这2种方法的原因,是因为使用stop方法会强行终止线程的所有锁定,如果对象处于一种不连贯的状态,那么损坏的对象对其他线程可见,这有可能导致不安全的操作。 suspend方法可能会发生死锁,所以也不建议使用 ...
.为什么不推荐用 stop 和 suspend stop这个方法将终止所有未结束的方法,包括run方法。当一个线程停止时候,他会立即释放所有他锁住对象上的锁。这会导致对象处于不一致的状态。假如一个方法在将钱从一个账户转移到另一个账户的过程中,在取款之后存款之前就停止了。那么现在银行对象就被破坏了。因为锁已经被释放了。当线程想终止另一个线程的时候,它无法知道何时调用stop是安全的,何时会导致对象 ...
2013-07-02 19:41 0 3106 推荐指数:
多线程中stop()方法和suspend方法为什么不建议使用? 答:不建议使用这2种方法的原因,是因为使用stop方法会强行终止线程的所有锁定,如果对象处于一种不连贯的状态,那么损坏的对象对其他线程可见,这有可能导致不安全的操作。 suspend方法可能会发生死锁,所以也不建议使用 ...
stop()方法作为一种粗暴的线程终止行为,在线程终止之前没有对其做任何的清除操作,因此具有固有的不安全性。 用Thread.stop()方法来终止线程将会释放该线程对象已经锁定的所有监视器。如果以前受这些监视器保护的任何对象都处于不连贯状态,那么损坏的对象对其他线程可见,这有可能导致 ...
java5 以前, 有如下两种:第一种:new Thread(){}.start();这表示调用 Thread 子类对象的 run 方法, new Thread(){}表示一个Thread 的匿名子类 ...
java5 以前, 有如下两种:第一种:new Thread(){}.start();这表示调用 Thread 子类对象的 run 方法, new Thread(){}表示一个Thread 的匿名子类 ...
TThread在Classes单元里的声明如下 type TThread = class private FHandle: THandle; F ...
最近学习多线程的知识,看到API里说这些方法被废弃了,就查了一下原因 Thread.stop 这个方法会解除被加锁的对象的锁,因而可能造成这些对象处于不一致的状态,而且这个方法造成的ThreadDeath异常不像其他的检查期异常一样被捕获。 可以使用interrupt方法代替。事实上 ...
一,介绍 本文讨论JAVA多线程中,使用 thread.suspend()方法暂停线程,使用 thread.resume()恢复暂停的线程 的特点。 先介绍二个关于线程的基本知识: ①线程的执行体是run()方法里面的每一条语句,main线程执行的则是main()方法里面的语句 ...
简述 这两个操作就好比播放器的暂停和恢复。 但这两个 API 是过期的,也就是不建议使用的。 不推荐使用 suspend() 去挂起线程的原因,是因为 suspend() 在导致线程暂停的同时,并不会去释放任何锁资源。其他线程都无法访问被它占用的锁。直到对应的线程执行 resume() 方法 ...