【java多线程与并发库】---传统java多线程<5> 线程控制
1)由于资源的有限性以及线程之间运行步调的一致性,多个线程在并发执行时,一方面可能会竞争使用同一类资源,另一方面也可能需要保持一定的先后执行顺序。因此,编写多线程程序时,必须要考虑如何对线程进行有效控制,使它们能够合理地使用资源,并保持正确的执行顺序。
2)Thread类中线程控制方法
3)
1.线程的创建与启动
在程序中用new运算符创建一个线程时,还需要调用线程的start()成员方法,才能使线程从新建状态转换为可运行状态。如果线程获得了其运行所需的全部资源后就可以执行run()方法在CPU上运行。
2.线程的终止
调用线程的stop()成员方法可以终止当前线程的执行,使线程进入死亡状态。从JDK1.2开始,stop()方法已被废弃。
3.线程的挂起和恢复
(1)sleep()方法
void sleep(long millis);
void sleep(long millis,long nanos);
(2) suspend()方法和resume()方法
4.线程的阻塞和唤醒
wait()方法使当前线程阻塞,等待某一事件的发生
void wait(long timeout) throws InterruptedException;
void wait(long timeout,int nanos) throws InterruptedException;
notify()方法用来唤醒一个处于阻塞状态的线程,任何一个已经满足了被唤醒条件的线程都可能被唤醒。而notifyAll()方法则用于唤醒所有处理阻塞状态的线程。
void notify();
void notifyAll();
5.线程的让步
yield()方法可以使当前执行的线程让出CPU给其他线程执行,强制线程间合作。
6.等待其他线程结束
一个线程A调用另外一个线程B的join()方法可以使线程A暂停运行,直至线程B终止。 void join() throws InterruptedException
void join(long timeout) throws InterruptedException
void join(long milliseconds, int nanoseconds) throws InterruptedException