• Java学习61


    当实例化一个Thread对象并执行start()方法后,线程进入“可执行”状态,开始执行,虽然多线程给用户一种同时执行的感觉,但事实上在同一时间点上,只有一个线程在执行,只是线程之间转换的动作很快,所以看起来好像同时在执行一样。

    当线程启用start()方法后,进入“可执行”状态,执行用户覆写的run()方法。

    一个线程进入“可执行”状态下,并不代表它可以一直执行到run()结束为止,事实上它只是加入此应用程序执行安排的队列中,也就是说,这个线程加入了进程的线程执行队列中,对于大多数计算机而言,只有一个处理器,无法使多个线程同时执行,这时需要合理安排线程执行计划,让那些处于“可执行”状态下的线程合理分享CPU资源。

    所以,一个处在“可执行”状态下的线程,实际上可能正在等待取得CPU时间,也就是等候执行权,在何时给予线程执行权,则由Java虚拟机和线程的优先级来决定。

    在“可执行”状态下,线程可能被执行完毕,也可能没有执行完毕,处于等待执行权的队列中,当使线程离开“可执行”状态下的等待队列时,线程进入“非可执行”状态。

    可以使用Thread类中的wait()、sleep()方法使线程进入“非可执行”状态。

    当run()方法执行完毕后,线程自动消亡,当Thread类调用start()方法时,Java虚拟机自动调用它的run()方法,而当run()方法结束时,该Thread会自动终止。以前Thread类中存在一个停止线程的stop()方法,不过它现在被废弃了,因为调用这个方法,很容易使程序进入不稳定状态。

  • 相关阅读:
    netcore 开发问题整理(图片地址)
    netcore 开发问题整理(下拉框)
    C# 请求网址中汉字的编码转换
    C# 时间戳
    c# 判断指定文件是否存在
    js数组常用方法整理
    服务器断电 Mysql启动失败
    Bean初始化之postProcessBeforeInitialization、afterPropertiesSet、init-method、postProcessAfterInitialization等方法的加载
    Java多线程基础
    Mysql多字段order by用法
  • 原文地址:https://www.cnblogs.com/hhw12345/p/14162087.html
Copyright © 2020-2023  润新知