JAVA并发编程——线程的状态

目录

线程的状态

 线程的优先级

每日寄语 


线程的状态

线程是有状态的,并且这些状态之间也是可以互相流转的。Java中线程的状态分为6种:

  • 1.初始(NEW):新创建了一个线程对象,但还没有调用start()方法。
  • 2.运行(RUNNABLE):Java线程中将就绪(READY)和运行中(RUNNING)两种状态笼统的称为“运行”。
    • 就绪(READY):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中并分配cpu使用权 。
    • 运行中(RUNNING):就绪(READY)的线程获得了cpu 时间片,开始执行程序代码。
  • 3.阻塞(BLOCKED):表示线程阻塞于锁(关于锁,在后面章节会介绍)。
  • 4.等待(WAITING):进入该状态的线程需要等待其他线程做出一些特定动作(通知或中断)。
  • 5.超时等待(TIMED_WAITING):该状态不同于WAITING,它可以在指定的时间后自行返回。
  • 6. 终止(TERMINATED):表示该线程已经执行完毕。

下图是一张线程状态的流转图:

 线程的优先级

        我们学习过,Java虚拟机采用抢占式调度模型。也就是说他会给优先级更高的线程优先分配CPU。虽然Java线程调度是系统自动完成的,但是我们还是可以“建议”系统给某些线程多分配一点执行时间,另外的一些线程则可以少分配一点——这项操作可以通过设置线程优先级来完成。Java语言一共设置了10个级别的线程优先级(Thread.MIN_PRIORITY至Thread.MAX_PRIORITY),在两个线程同时处于Ready状态时,优先级越高的线程越容易被系统选择执行。Java 线程优先级使用 1 ~ 10 的整数表示。默认的优先级是5。

最低优先级 1:Thread.MIN_PRIORITY

最高优先级 10:Thread.MAX_PRIORITY

普通优先级 5:Thread.NORM_PRIORITY

        在Java中,可以使用Thread类的setPriority()方法为线程设置了新的优先级。getPriority()方法返回线程的当前优先级。当创建一个线程时,其默认优先级是创建该线程的线程的优先级。

以下代码演示如何设置和获取线程的优先:

/**
 * @author Hollis
 */
public class Main {

    public static void main(String[] args) {
        Thread t = Thread.currentThread();
        System.out.println("Main Thread  Priority:" + t.getPriority());

        Thread t1 = new Thread();
        System.out.println("Thread(t1) Priority:" + t1.getPriority());
        t1.setPriority(Thread.MAX_PRIORITY - 1);
        System.out.println("Thread(t1) Priority:" + t1.getPriority());

        t.setPriority(Thread.NORM_PRIORITY);
        System.out.println("Main Thread  Priority:" + t.getPriority());

        Thread t2 = new Thread();
        System.out.println("Thread(t2) Priority:" + t2.getPriority());

        // Change thread t2 priority to minimum
        t2.setPriority(Thread.MIN_PRIORITY);
        System.out.println("Thread(t2) Priority:" + t2.getPriority());
    }

}

输出结果为:

 在上面的代码中,Java虚拟机启动时,就会通过main方法启动一个线程,JVM就会一直运行下去,直到以下任意一个条件发生:

  • 调用了exit()方法,并且exit()有权限被正常执行。
  • 所有的“非守护线程”都死了(即JVM中仅仅只有“守护线程”)。

每日寄语 

                愿中国青年都摆脱冷气,只是向上走,不必听自暴自弃者流的话。能做事的做事,能发声的发声,有一分热,发一分光,就令萤火虫一般,也可以在黑暗里发一点光,不必等候炬火。此后如竟没有炬火,我便是唯一的光。——鲁迅

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值