线程简单的API

通过线程获取name,id,priority

public class ThreadApi {

  public static void main(String[] args) {
    Thread t = new Thread(()->{
      Optional.of("hello").ifPresent(System.out::println);
      try {
        Thread.sleep(2_000);
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    },"testThread");
    t.start();
    Optional.of(t.getName()).ifPresent(System.out::println);
    Optional.of(t.getId()).ifPresent(System.out::println);
    // 优先级默认是5
    Optional.of(t.getPriority()).ifPresent(System.out::println);
  }
  /** 结果:
   * testThread
   * hello
   * 11
   * 5
   * */
}

得到的线程的名称是我赋值的testThread

得到线程的id是11,这说明在启动该线程前,jvm创建了多个其他的线程,我们可以通过jconsole查看

在这里插入图片描述

线程默认优先级是5

注意,线程的优先级并不代表执行顺序的先后

public class ThreadApi2 {
  public static void main(String[] args) {
    Thread t0 = new Thread(()->{
      for (int i =0;i<100;i++) {
        Optional.of(Thread.currentThread().getName()+"-index:"+i).ifPresent(System.out::println);
      }
    });
    t0.setPriority(Thread.MAX_PRIORITY);
    Thread t1 = new Thread(()->{
      for (int i =0;i<100;i++) {
        Optional.of(Thread.currentThread().getName()+"-index:"+i).ifPresent(System.out::println);
      }
    });
    t1.setPriority(Thread.NORM_PRIORITY);
    Thread t2 = new Thread(()->{
      for (int i =0;i<100;i++) {
        Optional.of(Thread.currentThread().getName()+"-index:"+i).ifPresent(System.out::println);
      }
    });
    t2.setPriority(Thread.MIN_PRIORITY);
    t0.start();
    t1.start();
    t2.start();
    /**
     * 优先级越高不一定先执行
     * Thread-2-index:0
     * Thread-0-index:0
     * Thread-1-index:0
     * Thread-0-index:1
     * Thread-2-index:1
     * Thread-2-index:2
     */
  }
}

我创建了3个线程t0、t1、t2优先级分别是10、5、1,但是先执行的却是t2,由此可知线程的优先级高的未必是先被执行的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐观的Terry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值