Java并发——线程状态

线程状态可以分为6中:

New(新创建)

Runnable(可运行)

Blocked(被阻塞)

Waiting(等待)

Timed waiting(计时等待)

Terminated(被终止)

要确定一个线程的当前状态,可调用getState方法

1.新创建线程:

如 new Thread(r),该线程还没有开始运行

2.可运行线程:

一旦调用了start方法,线程处于runnable状态。一个可运行的线程可能正在运行也可能没有运行,这取决于操作系统给线程提供的运行时间,一个正在运行的线程仍然处于可运行状态

线程是否处于运行依赖于系统提供的服务,一般的系统都使用抢占式调度,一个线程只有调用yield方法、或者被阻塞或等待时,线程才失去控制权。

3.被阻塞线程和等待线程:

当线程处于被阻塞或等待状态时,它暂时不活动,它不运行任何代码且消耗最小的资源。

当一个线程视图获取一个内部的对象锁,而该锁被其他线程持有,则该线程进入阻塞状态

当线程等待另一个线程通知调度器一个条件时,它自己进入等待状态

有几个方法有一个超时参数。调用它们导致线程进入计时等待状态

4.被终止的线程:

线程因如下两个原因之一而被终止:

因为run方法正常退出而自然死亡

因为一个没有捕获的异常终止了run方法而意外死亡

5.java.lang.Thread 1.0:

void join()

等待终止指定的线程

void join(long millis)

等待指定的线程死亡或经过指定的毫秒数

Thread.State getState() 5.0

得到这一线程的状态;NEW、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING或TERMINATED之一

void stop()

停止该线程。这一方法已经过时

void suspend()

暂停这一线程的执行。这一方法已过时

void resume()

恢复线程。这一方法仅仅在调度suspend()之后调用。这一方法已过时

猜你喜欢

转载自blog.csdn.net/qq_38386085/article/details/81502919