Thread 类及常见方法


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
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值