Java线程学习笔记-生命周期与线程常用的方法

线程的生命周期

  • cpu的等待资格
  • cpu的执行权

当你刚new出来一个线程的时候,他并不具备cpu的等待资格。

在调用start()方法的时候,进程会进入一个可运行的状态。(此时具备cpu的等待资格,但不具备cpu的执行权利。)当cpu运行它的时候,它就进入了一个运行状态(即具备cpu的等待资格,也具备cpu的执行权)。

线程的生命周期状态图:

Java线程学习笔记-生命周期与线程常用的方法_第1张图片
image.png

运行状态下的线程调用了sleep方法或是wait方法都会进入临时阻塞状态,临时阻塞状态下的线程是不具备cpu的等待资格与执行权,当阻塞状态下的线程达到了指定的睡眠时间后,或者是其他线程唤醒wait状态下的线程,那么线程就会重新进入可运行状态。

sleep方法可以指定毫秒值。

共五种状态:创建状态、可运行状态、运行状态、消亡状态、临时阻塞状态。

线程常用的方法:

  • Thread(String name) 初始化线程的名字
  • getName() 返回线程的名字
  • setName() 设置线程对象名

static sleep() 线程睡眠指定的毫秒数(就是暂停一会在执行)

getPriority() 返回当前线程对象的优先级 默认线程的优先级是5
setPriority(int newPriority) 设置线程的优先级 虽然设置了线程的优先级,但是具体的实现取决于底层的操作系统的实现(最大的优先级是10,最小的是1,默认是5

优先级涉及的是一个概率的问题,谁的优先级越大谁先获得cpu的资源的概率就越大

static currentThread() 返回当前执行该方法的线程对象引用。(判断的标准也是哪个线程在执行,那么就返回的是谁。)

哪个线程执行了sleep的代码,那么该线程就会睡眠指定毫秒数。

sleep哪个线程在执行就是谁在睡眠,不守调用者影响。

Thread mainThread = Thread.currentThread();
System.out.println("主线程的优先级:"+mainThread.getPriority());//默认的优先级是5
mainThread.setPriority(9);//设置线程的优先级
System.out.println("主线程的名字:"+mainThread.getName());

你可能感兴趣的:(Java线程学习笔记-生命周期与线程常用的方法)