003 线程属性

一 . 概述

一个线程可以具有很多的属性.如,名字,优先级,是否后台线程.


 二 . 线程的名字

  这个十分好理解,就是在创建线程之后给一个线程指定一个名字.

我们给一个线程分配名字的常用方式有两个:

[1]在Thread的构造函数之中给出线程的名字

[2]调用线程实例的setName()方法给线程一个名字.


三 .线程的优先级

  在创建线程的时候可以给线程指定一个优先级,但是这个优先级不是可靠的一种决定线程运行的参数.

  优先级只能说运行的机会比较多,但是在指定时间未必是它在运行.

  注意: 我们不能指望优先级来控制线程的运行状态.


四 线程组

  线程在创建的时候会指定一个线程组,如果没有显示指定,那么这个线程所属的线程组就是

    其父线程所在的线程组.

  注意:

    [1]main方法运行时的线程组是main.

    [2]线程组在模型上讲应该是一个树形的结构.

    [3]线程组的作用是控制一组线程的方式,尽管我们并不常用.

在Bloch的书中,对线程组的一个概念,那就是线程组是一个失败的概念,我们现在对此并没有十分的依赖.


五 .守护线程

一个线程在创建的时候,可以指定是否是守护线程.

  守护线程:守护线程的生命周期最长不会多于最后一个非守护线程终结的时刻.

    我们常常使用守护线程做一些维护的工作,辅助的工作.

      当我们的主任务完成,守护线程自动终结.  

创建一个守护线程的方式就是使用:

 public final void setDaemon(boolean on) {
        checkAccess();
        if (isAlive()) {
            throw new IllegalThreadStateException();
        }
        daemon = on;
    }

切记: 为线程设置其守护线程的属性需要在线程启动之前,否则就会出现一个异常,这个在源代码之中我们可以看到.[红色的部分表示出现线程状态异常]

  

原文地址:https://www.cnblogs.com/trekxu/p/8975080.html