suspend()、resume()、stop()分别对应线程的暂停、恢复、停止。但是这些API是过期的,也就是不建议使用的API。
suspend()在调用之后,线程不会释放自己已经占有了的资源(比如锁),而是占有着资源进入到睡眠状态,这样容易应发死锁问题。
stop()方法在终结一个现车时不会保证线程的所有资源都正常释放,通常是没有给予线程完成资源释放工作的机会,因此导致程序可能工作在不确定的状态下。
暂停和恢复操作可以用等待/通知机制来代替。
Object.wait() 和Thread.sleep()方法都可以让线程等待若干时间,除了wait()可以被唤醒外,另一个主要的区别是wait()方法会释放目标对象的锁,而Thread.sleep()方法不会释放任何资源。
join()的本质是让调用线程wait()在当前线程对象实例上,即在A线程中调用了B线程的join()方法,则A线程等待B线程执行完了后,才继续执行。
Thread.yield()为静态方法,他的定义如下
public static native void yield();
一旦执行,它会使当前线程让出CPU,但是注意,让出CPU并不表示当前线程不执行了。当前线程在让出CPU后,还会参与争夺CPU资源,但是能否争取得到就不一定了。