zoukankan      html  css  js  c++  java
  • 20165105 第八周学习总结

     第十二章学习总结

    进程与线程:进程和线程都是一个时间段的描述,是CPU工作时间段的描述。进程是程序的一次动态执行过程;线程是比进程更小的执行单位

       区别:
              (1)进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元
              (2)同一个进程中可以包括多个线程,并且线程共享整个进程的资源(寄存器、堆栈、上下文),一个进行至少包括一个线程。
              (3)进程的创建调用fork或者vfork,而线程的创建调用pthread_create,进程结束后它拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束
              (4)线程是轻两级的进程,它的创建和销毁所需要的时间比进程小很多,所有操作系统中的执行功能都是创建线程去完成的
              (5)线程中执行时一般都要进行同步和互斥,因为他们共享同一进程的所有资源
              (6)线程有自己的私有属性TCB,线程id,寄存器、硬件上下文,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志
     

    线程的状态与生命周期

    • Java语言使用Thread类及其子类的对象来表示线程,完整的生命周期要经历一下状态:
      1. 新建
      2. 运行:必须调用start()方法通知JVM才会运行
      3. 中断: 四种原因中断
      4. 死亡:原因有二,一为正常运行结束;二为线程被强制提前结束,即强制run()方法结束。
    • 常用方法
      • start();
      • run(),在线程没有结束run()之前,不要再让线程调用start()方法,否则将发生IllegalThreadStateException异常
      • sleep(int millsecond)必须在try-catch语句块中调用sleep方法
      • isAlive();
      • currentThread()返回当前正在使用CPU资源的线程
      • interrupt();
    • 线程同步机制:当一个线程A使用synchronized方法时,时就必须等待,知道线程A使用完synchronized方法
    • 不可以在非同步方法中使用wait(),notify(),notifyAll()
    • A在运行期间使用Join()联合B,那么A线程立刻终端执行,一直等待B执行结束,A再重新排队等待CPU资源
    • AWT-EventQuecue线程负责处理GUI事件,AWT-Windows线程负责将窗体或组件绘制到桌面

    代码托管:https://gitee.com/BESTI-IS-JAVA-2018/besti-Java20165105

  • 相关阅读:
    【模板(们)】noip前热身练习(更新中...)
    【hdu4734】【F(x)】数位dp + 小小的总结一下
    关于teamview无法捕捉画面问题
    接口、抽象类、抽象方法、虚方法总结
    Jquery Validate 相关参数及常用的自定义验证规则
    MVC过滤器使用案例:统一处理异常顺道精简代码
    javascript Date format(js日期格式化)
    部署网站遇到的几点问题
    表“TableDetails”中列“IsPrimaryKey”的值为 DBNull
    MySql与SqlServer的一些常用用法的差别
  • 原文地址:https://www.cnblogs.com/y454030212/p/8910778.html
Copyright © 2011-2022 走看看