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

课本知识总结

第十二章 Java多线程机制

  1. Java中的线程
  • 进程:是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程
  • 线程:一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每个线程都有它自身的产生、存在和消亡的过程
  • 多线程:指一个应用程序中同时存在一个执行体
  • 线程的状态及生命周期
    • 新建:用Thread类及其子类的对象来表示线程
    • 运行:run()
    • 中断
    • 死亡:释放分配给线程对象的内存
  • 每个Java线程的优先级都在常数1和10之间,若没有明确设置优先级,每个线程的优先级都为常数5。
  1. Thread类与线程的创建
  • 在Java语言中,用Thread类或子类创建线程对象
  • 使用Thread类:Thread(Runnable target)
  • 目标对象与线程的关系
    • 目标对象与线程完全耦合
    • 目标对象组合线程(弱耦合),即将线程作为自己的成员
  1. 线程的常用方法
  • start():启动线程
    • 只有处于新建状态的线程才可以调用start()方法
    • 线程之后不必在调用start()方法,否则会导致IllegalThreadStateException异常
  • run()
    • 用来定义线程对象被调度之后所执行的操作
    • 当run方法执行完毕,线程就变成死亡状态
  • sleep(int millsecond)
    • 用来是优先级高的线程休眠,使优先级低的线程做工作
    • 必须在try-catch语句中调用sleep语句
    • millsecond是以毫秒为单位的休眠时间
  • isAlive()
    • 线程处于新建状态时,调用isAlive()返回false
    • 在run()结束之前,调用isAlive()返回true
    • 在run()结束后,调用isAlive()返回false
  • currentThread():返回正在使用的CPU资源的线程
  • interrupt():结束一些线程的休眠,重新排队等待CPU资源
  1. 线程同步
  • 若干个线程都需要使用一个synchronized(同步)修饰的方法
  • 同步机制:当一个线程A使用synchronized方法时,其他线程想使用这个synchronized方法时就必须等待,直到线程A使用完该synchronized方法
  1. 协调同步的线程
  • 使用wait()方法,中断线程的执行,使本线程等待,暂时让出CPU的使用权
  • 使用notifyAll()方法通知所有由于使用一个同步方法而处于等待的线程结束等待
  1. 线程联合
  • 一个线程A在占有CPU资源期间,可以让其他线程调用join()和本线程联合
B.join()
  • 在联合后,A线程立刻中断执行,一直等到B线程执行完毕,再重新排队等待CPU资源
  • 在B线程结束后,B.join()不会产生任何效果
  1. GUI线程
  • 当Java程序包含图形用户界面(GUI)时,Java虚拟机在运行应用程序会自动启动更多的线程
  • 两个重要的线程
    • AWT-EventQuecue:负责处理GUI事件
    • AWT-Windows:负责将窗体或组件绘制到桌面
  1. 计时器线程
  • 构造方法:Timer(int a,object b),a的单位为毫秒,b是计时器的监视器
  • 只震铃一次:调用setReapeats(boolean b)方法,b取值false
  • 启动计时器:start()
  • 停止计时器:stop()
  • 重启计时器:restart()

遇到的问题及解决方法

  1. 在课上测试数据库时,输入中文最后输出来是乱码。

解决办法:这里自己在课前没有做好充分准备,没有仔细看书上步骤,在新建数据库时,要选择中文相应的字符编码gb2312(GB2312 Simplified Chinese)

  1. 在运行本章第7个代码时,发现没有输出
    image

解决办法:在检查代码后,发现自己粗心未在调用方法中输入变量名

  1. 在运行第5个代码时,程序一直跳时间,无法跳出,怎样使一个线程终止运行?

解决办法:参考Java中如何正确而优雅的终止运行中的线程,源程序中只调用了start()方法,程序不断地分配新实体,参看第6个代码,可调用interrupt()结束一些程序的休眠,中断正在运行的线程。

代码托管

image

上周错题总结

  1. image

解析:答案ACDE

  1. image

解析:答案C

  1. image

解析:executeUpdate的返回值是一个整数,指示受影响的行数(即更新计数)

posted @ 2018-04-22 11:35  20165330张羽昕  阅读(159)  评论(0编辑  收藏  举报