线程的状态和生命周期

线程的生命周期分为5个状态。

(1)新建状态(Create):创建一个线程类的对象后,产生的新线程就进入新建状态。

如:Thread  myth=new MyThread();

(2) 可运行状态(Runable):也叫就绪状态,调用start()方法后进入。

(3) 运行状态(running):当处于就绪状态的线程被调用并获得了cpu等执行必须的资源时,就进入了运行状态。

    myth.run();

(4) 挂起状态(blocked):也叫堵塞状态,当下面的四种情况·之一出现时就会进入:

调用了sleep()方法

调用了wait()方法。

如果线程中使用synchronized来请求对象的锁未获得时。

如果线程中有输入输出操作。

如果一个线程进入了挂起状态,就无法进入就绪队列。这时,通常需要由某些事件才能唤醒,具体由什么唤醒取决于挂起的原因。

(5) 停止状态(dead):线程已经退出运行状态,并且不再进入就绪状态。产生这种现象的原因可能是线程已经执行完毕,或者被另一个进程强行杀死。

 

  1. 线程的基本控制

(1)终止线程

线程run()方法执行完毕后,会自然终止。

也可通过调用stop()方法来终止线程。

(2)测试线程状态

  可以通过isAlive()方法来来获取线程是否处于活动状态。start()后,终止前,都属于活动状态。

(3)线程的暂停与恢复

  sleep()方法:将线程停止若干毫秒。

join()方法:当前线程等待调用该方法的线程结束后,再恢复执行。

  1. 线程的调度和优先级

设置线程优先级的格式为:

线程名.setPriority(i);

其中,i的取值为1~10,10为最大优先级。

Thread类有三个优先级静态常量:

MAX_PRIORITY:最大优先级,10。

MIN_PRIORITY:最小优先级,1。

NORM_PRIORITY:普通优先级,5。

猜你喜欢

转载自blog.csdn.net/cc1969281777/article/details/82836620