Java中的多线程常用方法(二)。

1、void setName()方法

作用:设置当前线程的名称。

java charset 配置 java setpriority_java charset 配置

2、int getPriority()方法

作用:获取当前线程的优先级。

java charset 配置 java setpriority_java charset 配置_02

注:线程的优先级一共分为10个,分别用1到10表示。1表示最低优先级,5表示正常优先级(也是默认的优先级),10表示最高优先级。

java charset 配置 java setpriority_main方法_03

线程的优先级越高,说明线程分配到的CPU时间片可能更多。

Java中main方法的优先级默认是5。

3、void setPriority()方法

作用:设置线程的优先级。

java charset 配置 java setpriority_main方法_04

java charset 配置 java setpriority_优先级_05

4、boolean isAlive()方法

作用:判断当前线程是否处于活动状态。

java charset 配置 java setpriority_java set 多线程_06

5、boolean isDaemon()方法

作用:判断当前线程是否为守护线程。

java charset 配置 java setpriority_优先级_07

6、守护线程和用户线程区别

<1>守护线程

守护线程依赖于创建它的线程。当创建守护线程的线程执行结束之后,无论守护线程是否执行结束,该守护线程都会立即结束。

举例:假设main方法中创建一个守护线程,然后main执行结束后,那么该守护线程也将结束。

在Java中,GC(垃圾回收器)就是一个典型的守护线程。

<2>用户线程

用户线程不依赖与创建它的线程。创建它的线程结束之后,用户线程会继续执行,直到用户线程代码执行结束。

7、void setDaemon()方法

作用:设置一个线程为守护线程。

java charset 配置 java setpriority_守护线程_08

8、void join()方法

java charset 配置 java setpriority_优先级_09

join()方法有三个版本,分别如上图所示。

<1>无参数表示当前线程执行结束后,才会继续执行其他的线程。

<2>一个参数表示当前线程阻塞指定时间后,继续执行其他线程。

<3>两个参数表示精确到纳秒。作用相同。

一般使用join()方法。

举例说明:

创建一个测试线程ThreadTestOne类,如下所示:

java charset 配置 java setpriority_优先级_10

8.1、没调用join()方法前案例

在main方法中开启线程ThreadTestOne类:

java charset 配置 java setpriority_java charset 配置_11

测试结果如下图所示:

java charset 配置 java setpriority_java set 多线程_12

8.2、调用join()方法后案例

同样在main方法中开启线程,并且调用join()方法:

java charset 配置 java setpriority_守护线程_13

测试结果如下图所示:

java charset 配置 java setpriority_守护线程_14

注意:对别两个输出结果,可以看出main输出的语句顺序不一致。

分析:第一个案例没有调用join()方法,所以开启t1线程后,main方法继续执行。而第二个案例调用了join()方法,main方法会等t1线程执行结束后再继续执行。

综上,Java中的多线程常用方法(二)介绍完了。