20165209 2017-2018-2 《Java程序设计》第8周学习总结

20165209 2017-2018-2 《Java程序设计》第8周学习总结

教材学习内容总结

Java中的线程

  • 操作系统可以同时管理多个进程,可以让多个进程共享系统所管理的资源。
  • 线程可以共享进程过程中某些内存单元(包括代码与数据)。一个进程可以让其中的多线程轮流使用CPU。
  • 在JVM加载代码时,发现main方法后就会启动“主线程”,负责执行main方法。
  • 如果main方法中又创建了其他线程,那么JVM就要在主线程和其他县城之间轮流切换,保证每个县城都有机会使用CPU资源。
  • JVM等到Java应用程序中所有线程都结束后,才结束Java程序。
  • 使用Thread类及其子类的对象表示线程,包裹下面四种状态:
    1.新建:创建Thread子类
    2.运行:必须在子类中重建run()方法。
    3.中断:当前线程切换给其他进程;执行了sleep(int millsecond)方法,使当前进程进入休眠状态;执行了wait()方法,使当前进程进入等待状态;执行了某个操作进入阻塞状态。
    4.死亡:结束了run()方法。

Thread类与线程创建

  • 使用Thread类:
    1.给出线程对象的目标对象,实现Runnable接口。
    2.创建线程对象,并指定其目标对象。
    3.目标对象与线程关系 :完全解耦,弱耦合
    4.run()方法

线程常用方法

  • start():没有结束run()方法之前,再次调用start()方法会导致异常。
  • run()
  • sleep(int millsecond)
  • isAlive()
  • currentTheread():返回当前正在使用CPU资源。
  • interrupt():吵醒正在sleep的线程。
  • 注:正在使用的线程不要创建新的对象。

线程同步

  • 若干个线程都需要使用一个synchronized(同步)方法。
  • 同步机制:当一个线程使用synchronized(同步)方法时,其他方法只能等待该线程使用完方法后,再使用。(同步方法不能启动2次)

协调同步进程

  • wait()方法可以中断线程执行,释放CPU使用权。
  • 用notifyAll()方法通知所有由于使用同步方法而处于等待的线程结束等待,并遵循“先中断先继续”的原则。
  • 注:不可在非同步方法中使用wait()、notify()方法和notifyAll()方法,且不可重写。
    -wait()方法应当放在一个“while(等待条件){}”的循环语句,而不是“if(等待条件){}”的分支语句中。

线程联合

  • 一个线程在占有CPU期间,可以让其他线程调用join()和本线程联合。

GUI 线程

-AWT-EventQuencue线程负责处理GUI事件,AWT-Windows负责窗体或组件绘制到桌面。

计时器线程

  • Thread类创建的线程称作用户线程,Timer类创建的是专门计时的线程。
  • start()方法启动计时器;stop()停止计时器,即挂起线程;restart()重新启动计时器,即恢复线程。

守护线程

  • 线程默认是非守护线程,也称用户线程。当程序中的所有用户线程都结束运行时,即使守护线程还有需要执行的语句,守护线程也立刻结束执行
  • 线程可以调用void setDaemon(boolean on)方法将自己设置成一个守护线程。
  • 一个线程必须在运行之前设置自己是否守护线程。

教材学习中的问题和解决过程

  • 问题1:什么是线程同步?
  • 问题1解决方案:几个线程需要调用同一个同步方法(用synchronized修饰的方法)。
  • 问题2:线程在什么状态时调用isAlive()方法返回值是false?
  • 问题2解决方案:线程处于新建状态时,线程调用isAlive()方法返回值是false。

代码托管

上周考试错题总结

  • 错题1:下列属于常用数据库的是 A C D E
    A . Access
    B . XAMMP
    C . MySQL
    D . Oracle
    E . SQL Server

  • 错题2:接口RowSet继承了接口__,可以调用RowSet中的方法__来填充其数据区。 C
    ①Statement ②ResultSet ③update ④populate
    A . ①③
    B . ①④
    C . ②③
    D . ②④

其他(感悟、思考等,可选)

由于本章是Java中的难点,也有很多知识比较难以理解,所以花费了多一些的时间通过代码、视频教程和课本,对java的多线程了解了许多,课后还要多练习看书,巩固知识。

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 37/37 1/1 20/20
第二周 654/691 3/4 18/38
第三周 477/1131 3/7 22/60
第四周 657/1730 2/9 30/90
第五周 1260/2515 1/10 30/120
第六周 1022/3319 2/12 20/140
第七周 1213/3803 1/13 20/160
第八周 993/4796 4/17 30/190

参考资料

猜你喜欢

转载自www.cnblogs.com/tutu233/p/8906515.html
今日推荐