• java 多线程笔记四 线程状态


    1,new新建

    new Thread(r)时,线程还没开始运行

    2,Runnable可运行状态

    一旦调用start方法,线程就处于可运行状态

    3,Blocked阻塞状态

    阻塞或等待状态时,线程暂时是不活动的,它不运行任何代码,而且消耗最少的资源。

    当一个线程获取一个内部的锁对象时,这个锁被其他线程占用。

    4,Waiting无限等待状态

    使用锁对象调用wait方法时

    5,Timed waiting 计时等待状态

    调用sleep方法或者wait(long timeout)方法时

    6,Terminated终止状态

    run方法执行完,或者出现异常未捕获而终止。


    线程状态的的切换:

    1,调用wait方法和notify方法都需要相同的锁对象才可以

    2,使用锁对象调用wait方法进入无限等待状态

    3,使用notify方法唤醒无限等待状态的线程

    4,调用sleep方法线程进入计时等待状态,那么该线程就不会霸占cpu资源

    5,调用wait方法进入无线等待状态,那么该线程不会霸占cpu资源,也不会霸占锁对象

    6,进入无限等待状态的线程,如果被其他线程唤醒,但是没有获取到锁对象,那么就进入到了锁阻塞状态

    7,通过wait(long Timeout)进入计时等待状态,如果时间到了被唤醒并且获取到锁对象那么就进入可运行状态,如果没有获取到锁对象那么就进入锁阻塞状态。如果时间没到被唤醒并且获取到锁对象那么就进入可运行状态,如果没有获取到锁对象那么就进入锁阻塞状态。


    1. public class Test {
    2. public static void main(String[] args) {
    3. //线程1 无线等待状态
    4. new Thread(()->{
    5. synchronized (Test.class) {
    6. //加锁快捷键ctrl+alt+t
    7. System.out.println(Thread.currentThread().getName()+"进入无限等待状态");
    8. try {
    9. Test.class.wait();//释放锁不会争夺cpu
    10. } catch (InterruptedException e) {
    11. e.printStackTrace();
    12. }
    13. System.out.println(Thread.currentThread().getName()+"被唤醒");
    14. }
    15. }).start();
    16. //线程2 唤醒线程1无限等待状态
    17. new Thread(()->{
    18. synchronized (Test.class) {
    19. //加锁快捷键ctrl+alt+t
    20. System.out.println(Thread.currentThread().getName()+"唤醒无限等待状态");
    21. //唤醒
    22. Test.class.notify();
    23. //等待5秒后再释放锁,上面虽然唤醒了线程一,但是线程一并拿不到锁,所以会等待5秒
    24. try {
    25. Thread.sleep(5000);//sleep并不会释放锁
    26. } catch (InterruptedException e) {
    27. e.printStackTrace();
    28. }
    29. System.out.println(Thread.currentThread().getName()+"执行完毕");
    30. }
    31. }).start();
    32. }
    33. }

  • 相关阅读:
    计算机毕业设计之java+ssm网上书店销售管理系统
    1688关键字搜索商品
    CRM 报告:跟踪销售业绩的强大工具
    30m退耕还湿空间数据集(2000-2010年,西南地区)
    Spring 框架的 MethodInterceptor 简介
    CAS策略
    程序设计与软件设计模式
    视频编码(3):H.266 编码性能比 H.265 再提升 49% 的关键丨音视频基础
    数据化管理洞悉零售及电子商务运营——电子商务中的数据化管理
    礼帽和黑帽
  • 原文地址:https://blog.csdn.net/qq_42572322/article/details/125548110