zoukankan      html  css  js  c++  java
  • 什么是线程(一)

    (一)什么是线程?waht?【”轻量级“进程,依赖进程,而存在。一个进程有一个或多个线程。eg:打开一个QQ,就是打开了一个进程,打开QQ聊天系统---->开启一个线程;打开视屏聊天--->又开启一个进程】

    (二)一个线程完整的生命周期:

    新建状态:使用new关键字,和Thread类(或其子类)建立一个线程对象后,该线程处于新建状态。保持这个状态直到程序start()这个线程

    就绪状态:当线程调用了start()方法后--->进入就绪状态【就处于就绪队列中】。等待JVM线程调度器的调度。

    运行状态【最复杂就绪状态线程获得CPU资源,就可以执行run()-->【处于运行状态】。它可以变为阻塞状态,就绪状态,死亡状态

    阻塞状态

    如果一个线程执行了sleep睡眠)、suspend已过时(因为它具有固有的死锁倾向)。挂起)等方法,失去所占用资源之后,该线程就从运行状态进入阻塞状态。在睡眠时间已到或获得设备资源后可以重新进入就绪状态。可以分为三种:

    • 等待阻塞:运行状态中的线程执行 wait() 方法,使线程进入到等待阻塞状态。

    • 同步阻塞:线程在获取 synchronized 同步锁失败(因为同步锁被其他线程占用)。

    • 其他阻塞:通过调用线程的 sleep() 或 join() 发出了 I/O 请求时,线程就会进入到阻塞状态。当sleep() 状态超时不会释放持有的锁】,join() 等待线程终止或超时,或者 I/O 处理完毕,线程重新转入就绪状态。

  • 相关阅读:
    各种算法七
    各种算法六
    使用URLConnection调用axis1.4开发的webservice
    JDBC结果集rs.next()注意事项
    URLConnection调用接口
    axis1.4开发webservice客户端(快速入门)-基于jdk1.4
    axis1.4开发webservice服务端(快速入门)-基于jdk1.4
    FMDB数据库的简单实用
    Xcode5 取消项目ARC,或者单个类ARC切换
    用CornerStone配置SVN,HTTP及svn简单使用说明
  • 原文地址:https://www.cnblogs.com/not-alone/p/8522839.html
Copyright © 2011-2022 走看看