发新话题
打印

学习Java私塾中级课程视频的感受分享 - 多线程

学习Java私塾中级课程视频的感受分享 - 多线程

本章概述和学习心得:

        本章介绍了Java程序中一个很重要的概念——多线程。线程可以看成一个有自己的程序代码和操作数据组成的虚拟机器(封装体)。一般而言,有两种写线程的方法,即:继承Thread类和实现Runnable接口。一个线程开始后,具有可运行、运行中、等待锁、阻塞、结束这几个不同的状态,程序员可以通过sleep、wait、notify、join和interrupt等方法来控制线程。另外,由于多个线程可以共享相同的数据(临界资源),这会导致数据的不一致性而发生不可预期的错误,Java引入了线程同步的机制。这样,就能使用synchronized来解决临界资源的问题。本章最后,老师演示了一段经典的生产者和消费者的代码,使我们对线程同步有了更进一步的直观理解。

内容提要:

【1】线程的基本概念:
      1. 封装体 :虚拟的处理机 + CPU执行的代码 + 代码操作的数据
      2. 进程和线程的区别:进程是独立的,而线程是共享的;线程可以看成轻量级的进程
      3. 线程的两种写法

【2】线程的状态:
      1. Runnable
      2. Running
      3. Blocke
      4. Blocked in wait ( ) pool
      5. Blocked in object's lock pool
      6. Dead

【3】线程的调度和控制
      1. 抢占式调度(不可控):优先级
      2. Thread.sleep ( )  : 给优先级较低的线程一个运行的机会
      3. yield ( ) : 给相同优先级的线程一个运行的机会
      4. isAlive ( )
      5. wait ( ) : 当前线程进入监察器对象的wait pool
      6. notify( ) / notifyAll( ):唤醒对象的wait pool 中的一个 / 所有等待的线程
      7. join ( ) :暂停当前线程,“合并”调用某线程
      8. interrupt( ): 发送一个例外,强制唤醒暂停线程
      9. 守护线程的概念

【4】线程同步
      1. 临界资源(共享资源):多个线程间共享的数据
      2. 临界资源问题:线程并发,数据不一致性
      3. 解决的办法:从对象中获得互斥锁 (synchronized)
      4. 死锁
      5. 同步运用的准则:精简、不要阻塞、持有锁的时候不调用其他对象的方法

【5】代码演示:经典的生产者和消费者

TOP

发新话题