20165316 第八周学习总结

20165316 第八周学习总结

教材学习内容总结

第十二章

  • 线程的一个生命周期有新建、运行、中断、死亡四个状态
  • 创建线程
    • 使用 Thread 的子类:必须 extends Thread,重写 run() 方法。
    • 使用 Thread 类:Thread(Runnable target) 。在创建对象时必须向构造方法传递一个实现 Runnable 接口类的实例,该实例对象称作所创建线程的目标对象 (必须重写 run() 方法)。
  • setPriority(int grade) 调整线程优先级(grade 1~10 )。
  • 线程的常用方法
    • start() 只有新建状态的线程才可以调用
    • run() 没有具体内容,用户程序需要创建自己的Thread类的子类,重写run()方法;执行完毕后,线程死亡
    • sleep(int millsecond)调用使高优先级的线程暂时进入休眠;必须在try-catch中使用
    • isAlive() 线程处在新建和死亡状态时,该方法返回false,处在运行状态时,返回true
    • currentThread()返回正在使用CPU资源的线程
    • interrupt()用来“吵醒”调用了sleep方法的线程
  • 线程同步:当一个线程 A 使用 synchronized 方法时,其他线程想使用这个 synchronized 方法时就必须等待,直到线程 A 使用完该方法。
  • 协调同步的线程:wait() 方法可以中断线程的执行,使本线程等待,暂时让出 CPU 的使用权,并允许其他线程使用这个同步方法。其他线程如果在使用这个同步方法时不需要等待,那么它使用完这个同步方法的同时,应当用 notifyAll() 方法通知所有等待线程结束等待,遵循“先中断后继续”的原则,notify() 方法仅通知处于等待中的线程的某一个结束等待。
  • 线程联合:A 线程中断运行,一直等到它联合的线程 B 执行完毕,A 线程再重新排队等待 CPU 资源,以便恢复运行。

遇见的问题和解决方法

  • 忘记添加 Runnable 接口导致 Thread 方法报错。

代码托管

截图如下

上周问题

没有

posted @ 2018-04-22 19:44  treebeard  阅读(137)  评论(0编辑  收藏  举报