zoukankan      html  css  js  c++  java
  • Java学习63

    线程的控制包括线程的启动、挂起、状态检查以及如何正确结束线程,由于在程序中使用多线程,为合理安排线程的执行顺序,可以对线程进行相应的控制。

    一个新的线程被创建后处于初始状态,实际上并没有立刻进入运行状态,而是处于就绪状态,当轮到这个线程执行时,即进入“可执行”状态,开始执行线程run()方法中的代码。

    执行run()方法是通过调用Thread类中start()方法来实现的。调用start()方法启动线程的run()方法不同于一般的调用方法,一般方法必须等到方法执行完毕才能够返回。

    而对于start()方法来说,调用线程的start()方法后,start()方法告诉系统该线程准备就绪并可以启动run()方法后,就返回,并继续执行调用start()方法下面的语句,这时run()方法可能还在运行,这样,就实现了多任务操作。

    线程的挂起操作实质上就是使线程进入“非可执行”状态下,在这个状态下,CPU不会分给线程时间段,进入这个状态可以用来暂停一个线程的运行,在线程挂起后,可以通过重新唤醒线程来使之恢复运行。这个过程在外表看来好像什么也没有发生过,只是线程很慢地执行一条指令。

    当一个线程进入“非可执行”状态,也就是挂起状态时,必然存在某种原因使其不能继续运行,这些原因可能是如下几种情况。

    (1)通过调用sleep()方法使线程进入休眠状态,线程在指定时间内不会运行。

    (2)通过调用join()方法使线程挂起,如果线程A调用线程B的join()方法,那么线程A将被挂起,直到线程B执行完毕为止。

    (3)通过调用wait()方法使线程挂起,直到线程得到了notify()和notifyAll()消息,线程才会进入“可执行”状态。

    (4)线程在等待某个输入/输出完成。

  • 相关阅读:
    课后作业-阅读任务-阅读笔记-4
    《团队--学生成绩管理-阶段互评》
    《团队-学生成绩管理-阶段互评》
    团队编程项目作业4-开发文档
    阅读任务--阅读提问-3
    课后作业-阅读任务-阅读笔记3
    课后作业-阅读任务-阅读提问-3
    课后作业-阅读任务-阅读笔记-3
    结对编程项目作业5
    结对编程项目作业4
  • 原文地址:https://www.cnblogs.com/hhw12345/p/14162100.html
Copyright © 2011-2022 走看看