1. Thread 的常见构造方法
方法 | 说明 |
Thread()
| 创建线程对象 |
Thread(Runnable target)
| 使用 Runnable 对象创建线程对象 |
Thread(String name)
| 创建线程对象并命名 |
Thread(Runnable target,String name)
| 使用 Runnable 对象创建线程对象,并命名 |
Thread(ThreadGroup group,Runnable target)【了解】 | 线程可以被分组管理,分好的组即线程组 |
Thread 类的具体用法:
给线程指定一个名字
这个名字指定与否,对于线程的执行,并没有影响,意义就是为了让代码调试起来更方便
运行下面代码,并且进入到 JConJConsole 中查看,查看方式参考如何用 JConsole 来观察线程
public class ThreadDemo8 {
public static void main(String[] args) {
Thread t = new Thread("这是一个线程的名字,可以很长"){
@Override
public void run(){
while (true){
}
}
};
t.start();
}
}
就可以看到我们刚刚手动命名的线程
2.Thread 的几个常见属性
属性 | 获取方法 |
ID | getId() |
名称 | GetName() |
状态 | getState() |
优先级 | gerPriority() |
是否后台线程 | isDaemon() |
是否存活 | isAlive() |
是否被中断 | isInterrupted() |
展示一下几个方法
public class ThreadDemo9 {
public static void main(String[] args) {
Thread t = new Thread("X线程"){
@Override
public void run(){
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName());
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//run 方法的执行过程中代表着系统内线程的生命周期
//run 方法执行中,内核的线程就存在
//run 方法执行完毕,内核中的线程就随之销毁
System.out.println("线程要结束了");
}
};
System.out.println(t.getName());
System.out.println(t.getPriority());
System.out.println(t.isDaemon());
System.out.println(t.getId());
//这三个属性会随着线程的执行过程而发生改变
System.out.println(t.getState());
System.out.println(t.isAlive());
System.out.println(t.isInterrupted());
t.start();
while (t.isAlive()){
System.out.println("X线程正在运行!");
System.out.println(t.getState());
System.out.println(t.isInterrupted());
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
表示获取到当前的线程的实例,在当前代码中类似于 this
上半部分运行效果:
- 我们可以对应着查看,进程是否存活是 false 是因为,进程还没 start;
- 进程的状态是 NEW 意味着 Thread 对象创建好了,但是内核中的线程还没有【相当于领导把任务已经分配给下属,但是下属还没有开始执行】;
接下来看后面的执行效果
每一个红框就是一次循环