Java并发编程示例并发编程示例(二二):获取和设置线程信息:获取和设置线程信息
主要介绍了Java并发编程示例(二):获取和设置线程信息,本文是系列文章的第二篇,本文着重讲解Thread类的几
个重要属性,需要的朋友可以参考下
Thread类包含几个属性,这些属性所表示的信息能帮助我们识别线程、观察其状态、控制其优先级等。这些线程包括如下几
种:
ID: 该属性表示每个线程的唯一标识;
Name: 该属性存储每个线程的名称;
Priority: 该属性存储每个Thread对象的优先级。线程优先级分1到10十个级别,1表示最低优先级,10表示最高优先级。并不
推荐修改线程的优先级,但是如果确实有这方面的需求,也可以尝试一下。
Status: 该属性存储线程的状态。线程共有六种不同的状态:新建(new)、运行(runnable)、阻塞(blocked)、等待
(waiting)、限时等待(time waiting)或者终止(terminated)。线程的状态必定是其中一种。
在本小节,我们将开发一个程序,程序中新建十个线程,并且设定每个线程的名称和优先级。然后执行线程,观察线程的状态
信息,直到线程执行结束。再说明一点,这些线程还是计算一个数的乘法表。
知其然知其然
按照下面所示步骤,来实现该示例:
1.创建一个名为 Calculator的类,实现Runnable接口。代码如下:
复制代码 代码如下:
public class Calculator implements Runnable {
2.声明一个私有的整形属性,名称为number,实现该类的构造函数来初始化刚刚声明的属性。代码如下:
复制代码 代码如下:
private int number;
public Calculator(int number) {
this.number = number;
}
3.实现run()方法,该方法是我们创建的线程执行时运行的程序(instruction),故而该方法用于计算乘法表。具体代码如下:
复制代码 代码如下:
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.printf("%s: %d * %d = %d",
Thread.currentThread().getName(),
number, i, i * number);
}
}
4.现在,我们来实现示例应用的主类(main class)。创建名为Main的类,在该类中添加main方法。代码如下:
复制代码 代码如下:
public class Main {
public static void main(String[] args) {
5.创建两个包含十个元素数组,一个是Thread类型的,一个是Thread.State类型,然后全部初始化。这两个数组,一个用于存
储我们将以执行的线程,另外一个存储这些线程的状态。代码如下:
复制代码 代码如下:
Thread[] threads = new Thread[10];
Thread.State[] status = new Thread.State[threads.length];
6.创建十个Calculator对象,并且使用不同的数来初始化每个对象。使用这些Calculator对象创建十个Thread对象,存储到上面
的创建数组中。同时,设置这些线程的优先级,五个设置成最高优先级;五个设置成最低优先级。代码如下:
复制代码 代码如下: