Java多线程编程核心技术 —— 拾遗增补

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lkp1603645756/article/details/84936238

1、线程对象在不同的运行时期有不同的状态,状态信息就存在于State枚举类中。

线程状态,线程可以处于下列状态之一。

  • NEW(new) 直接尚未启动的线程处于这种状态。
  • RUNNABLE(runnable)正在Java虚拟机中执行的线程处于这种状态。
  • BLOCEDE(blocede)受阻塞并等待某个监视器锁的线程处于这种状态。
  • WAITING(waiting)无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。
  • TIMED_WAITING(timed_waiting)等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。
  • TERMINATED(terminated)已退出的线程处于这种状态。

2、线程状态通俗易懂:

NEW状态是线程实例化后还未执行start()方法时的状态

RUNNABLE状态是线程进入运行的状态

TERMINATED是线程被销毁时的状态

TIMED_WAITING代表线程执行了Thread.sleep()方法,呈等待状态,等待时间到达,继续向下运行。

BLOCKED状态出现在某一个线程在等待锁的时候。

WAITING是线程执行了Object.wait()方法后所处的状态。

3、可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程。这样的组织结构有些类似于树的形式。

线程组的作用是,可以批量的管理线程或线程组对象,有效地对线程或线程组对象进行组织。

4、线程对象关联线程组:1级关联。1级关联就是父对象中有子对象,但并不创建子孙对象。

这种情况经常出现在开发中,比如创建一些线程时,为了有效地对这些线程进行管理,通常的情况下是创建一个线程组,然后再将部分线程归属到改组中。这样的处理可以对零散的线程对象进行有效的组织与规划。

5、线程对象关联线程组:多级关联。所谓的多级关联就是父对象中有子对象,子对象中再创建子对象,也就是出现子孙对象的效果了。

但是这种写法在开发中不太常见,如果线程树结构设计得非常复杂反而不利于线程对象的管理,但JDK却提供了支持多级关联的线程树结构。

6、线程组有自动归属特性,自动归属就是自动归到当前线程组中。

在实例化一个ThreadGroup线程组x时,如果不指定所属的线程组,则x线程组自动归到当前线程对象所属的线程组中,也就是隐式地在一个线程组中添加了一个子线程组。

7、类SimpleDateFormat主要负责日期的转换与格式化,但在多线程的环境中,使用此类容易造成数据转换及处理的不准确,因为SimpleDateFromat类并不是线程安全的。

猜你喜欢

转载自blog.csdn.net/lkp1603645756/article/details/84936238