private和public区别 方法resume负责恢复哪些线程的执行?
方法resume负责恢复哪些线程的执行?
suspend()方法。但是,这两种方法已过时,不建议使用。因为它具有固有的死锁倾向。如果目标线程在挂起时仍锁定在保护关键系统资源的监视器上,则在目标线程重新启动之前,任何线程都无法访问该资源。如果重新启动目标线程的线程希望在调用resume之前锁定监视器,则会发生死锁。这种僵局通常被证明是一个“冻结”的过程。
为什么不推荐使用stop和suspend这两个方法?
有两种实现方法,一种是继承thread类,另一种是实现runnable接口。synchronized关键字用于修改同步方法。Stop()是反对的,因为它不安全。它解锁线程获取的所有锁,如果对象处于非一致状态,其他线程可以在该状态下检查和修改它们。因此,很难发现真正的问题。suspend()方法容易死锁。调用suspend()时,目标线程停止,但仍保留在此之前获得的锁。此时,除非“挂起”线程恢复运行,否则其他线程无法访问锁定的资源。对于任何一个线程,如果他们想恢复目标线程,同时试图使用任何被锁定的资源,都会导致死锁。因此,您不应该使用suspend(),而应该在thread类中放置一个标志来指示线程应该是活动的还是挂起的。如果该标志指示线程应该挂起,请使用wait()命令它进入等待状态。如果该标志指示线程应该继续,请使用notify()重新启动它。
private和public区别 线程yield的用法 java中resume方法
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。