一 . 概述
一个线程可以具有很多的属性.如,名字,优先级,是否后台线程.
二 . 线程的名字
这个十分好理解,就是在创建线程之后给一个线程指定一个名字.
我们给一个线程分配名字的常用方式有两个:
[1]在Thread的构造函数之中给出线程的名字
[2]调用线程实例的setName()方法给线程一个名字.
三 .线程的优先级
在创建线程的时候可以给线程指定一个优先级,但是这个优先级不是可靠的一种决定线程运行的参数.
优先级只能说运行的机会比较多,但是在指定时间未必是它在运行.
注意: 我们不能指望优先级来控制线程的运行状态.
四 线程组
线程在创建的时候会指定一个线程组,如果没有显示指定,那么这个线程所属的线程组就是
其父线程所在的线程组.
注意:
[1]main方法运行时的线程组是main.
[2]线程组在模型上讲应该是一个树形的结构.
[3]线程组的作用是控制一组线程的方式,尽管我们并不常用.
在Bloch的书中,对线程组的一个概念,那就是线程组是一个失败的概念,我们现在对此并没有十分的依赖.
五 .守护线程
一个线程在创建的时候,可以指定是否是守护线程.
守护线程:守护线程的生命周期最长不会多于最后一个非守护线程终结的时刻.
我们常常使用守护线程做一些维护的工作,辅助的工作.
当我们的主任务完成,守护线程自动终结.
创建一个守护线程的方式就是使用:
public final void setDaemon(boolean on) { checkAccess(); if (isAlive()) { throw new IllegalThreadStateException(); } daemon = on; }
切记: 为线程设置其守护线程的属性需要在线程启动之前,否则就会出现一个异常,这个在源代码之中我们可以看到.[红色的部分表示出现线程状态异常]