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

猜你喜欢

转载自www.cnblogs.com/y454030212/p/8910778.html