多线程2
1.多线程
https://blog.csdn.net/qq_43361209/article/details/104092974
2.0 Thread类是什么?
答:Thread 类是线程的描述类,每个线程都有一个 Thread 对象与之关联。
详述:
- Thread 类是 JVM 用来管理线程的一个类。
- 每个线程都有一个唯一的 Thread 对象与之关联。
2.1 Thread的常见构造方法
方法 | 说明 |
---|---|
Thread() | 创建线程对对象 |
Thread(Runnable target) | 使用 Runnable 对象创建线程对象 (target 为描述任务的对象) |
Thread(String name) | 创建线程对象并命名 |
Thread(Runnable target , String name) | 使用 Runnable 对象创建线程对象并命名 |
public class ThreadName {
private static class MyThread extends Thread {
public MyThread(String name) {
super(name);
}
public MyThread() {
}
@Override
public void run() {
while (true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
// new Thread 创建线程
// (1)java内部线程对象的创建
// (2)系统创建线程,比较耗费时间和性能
Thread t1 = new MyThread();
Thread t2 = new MyThread("我是AAA");
Thread t3 = new Thread(new MyThread());
Thread t4 = new Thread(new MyThread(), "我是BBB");
t1.start();
t2.start();
t3.start();
t4.start();
}
}
用jconsole观察:
2.2 Thread的常见属性
属性 | 获取方法 | 补充 |
---|---|---|
ID | getId() | 线程的唯一标识,不同线程ID不会重复 |
名称 | getName() | 在调试工具中会用到 |
状态 | getState() | 表示线程当前状态 |
优先级 | getPriority() | 优先级高的线程理论上更容易被调度 |
是否后台线程 | isDaemon() | JVM会在一个进程的所有非后台进程结束后,才结束运行 |
是否存活 | isAlive() | run方法是否运行结束 (调用考虑点:非运行态不能执行到这行代码,如阻塞态、就绪态) |
是否中断 | isInterrupted() | 线程是否中断 |
public class ThreadFields {
private static class MyRunnable implements Runnable {
@Override
public void run() {
Thread current = Thread.currentThread();
System.out.println(current.getId());
System.out.println(current.getName());
System.out.println(current.getPriority());
System.out.println(current.getState());
System.out.println(current.isAlive());
/*
不能用this 此时this指的是Runnable对象 不是Thread对象
System.out.println(this.isInterrupted());
System.out.println(this.isDaemon());
*/
}
}
private static class MyThread extends Thread {
@Override
public void run() {
Thread current = Thread.currentThread();
System.out.println