# 03-线程的一些属性

## 名字

给以给线程取一个响亮的名字，便于排查问题，默认为`Thread-${一个数字}`这个样子

* 设置名字

```java
threadA.setName("欢迎关注微信公号'大雄和你一起学编程'");
```

* 获取名字

```java
threadA.getName();
```

## 是否是守护线程(daemon)

为其他线程服务的线程可以是守护线程，守护线程的特点是如果所有的前台线程死亡，则守护线程自动死亡。

非守护线程创建的线程默认为非守护线程，守护则默认为守护

* set

```java
threadA.setDaemon(true);
```

* get

```java
threadA.isDaemon();
```

## 线程优先级(priority)

优先级高的线程可以得到更多cpu资源, 级别是1-10，默认优先级和创建他的父线程相同

### set

```java
threadA.setPriority(Thread.NORM_PRIORITY);
```

### get

```java
threadA.getPriority()
```

## 所属线程组

可以把线程放到组里，一起管理

### 设置线程组

Thread的构造里边可以指定

```java
ThreadGroup threadGroup = new ThreadGroup("欢迎关注微信公号'大雄和你一起学编程'");
Thread thread = new Thread(threadGroup, () -> {
    System.out.println("欢迎关注微信公号'大雄和你一起学编程'");
});
```

### 拿到线程组

```
thread.getThreadGroup()
```

### 基于线程组的操作

```java
ThreadGroup threadGroup1 = thread.getThreadGroup();
System.out.println(threadGroup1.activeCount()); // 有多少活的线程
threadGroup1.interrupt();                       // 中断组里所有线程
threadGroup1.setMaxPriority(10);                // 设置线程最高优先级是多少
```
