20175221   《Java程序设计》第10周学习总结

教材学习内容总结

第十二章主要内容有:

  • 进程与线程

  • 进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程

  • 线程是比进程更小的执行单位,一个进程在执行过程中,可以产生多个线程,形成多条执行线索,每条线索,即每个线程也有它自身的产生、存在和消亡的过程,也是一个动态的概念

  • Java中的线程

  • Java内置对多线程的支持。我们的计算机在任何给定说的时刻只能执行线程中的一个,Java虚拟机只是从一个线程迅速地切换到另一个线程。
  • 线程的周期:线程使用 Thread 类及其子类对象来表示线程
  • Java语言使用 Thread 类及其子类的对象来表示线程,新建的线程一般要经历4个状态:新建、运行、中断、死亡
  • Thread类与线程的创建

  • 可以使用 Thread 类或者子类创建线程对象,注意子类必须重写run()方法,同时子类可以增加新的成员变量、方法使线程有具体的功能。
  • 使用 Thread 的子类, 需要重写父类的run()方法。
  • 用 Thread 创建线程通常使用 Thread(Runnable target)
  • 线程的常用方法

  • (1)  start() 方法:启动一个线程。
  • (2)  run() 方法:定义该线程的动作。
  • (3)  sleep() 方法:使线程睡眠一段时间,单位为ms。
  • (4)  suspend() 方法:使线程挂起。
  • (5)  resume() 方法:恢复挂起的线程。
  • (6)  yield() 方法:把线程移到队列的尾部。
  • (7)  stop() 5方法:结束线程生命周期并执行清理工作。
  • (8)  destroy() 方法:结束线程生命周期但不做清理工作。
  • 线程同步

  • 如果有若干个线程需要同时使用一个方法,为了不出现混乱,可以使用 synchronized 进行修饰。这样一来,该方法只能轮流被调用,直到正在调用该方法的线程使用完该方法后,其他线程才可以调用该方法。
  • 协调同步的线程

  • wait() 方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法。

  • notifyAll() 方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。曾中断的线程就会从刚才的中断处继续执行这个同步方法,并遵循“先中断先继续”的原则。

  • notify() 方法只是通知处于等待中的线程的某一个结束等待。

  • 线程联合

  • 线程A在其运行期间,如果其他线程B调用了 join() 方法和线程A联合,那么A线程会立马中断,直到B线程运行结束A线程才会重新排队。若B线程已经结束,调用 join() 方法则不会有任何效果。
  • GUI线程

  • (1)当Java程序包含图形用户界面 (GUI) 时,Java虚拟机在运行应用程序时会自动启动更多的线程,其中有两个重要的线程: AWT-EventQuecue 和 AWT-Windows 。
  • (2)AWT-EventQuecue线程负责处理GUI事件,AWT-Windows线程负责将窗体或组件绘制到桌面。
  • (3)JVM要保证各个线程都有使用CPU资源的机会,比如,程序中发生GUI界面事件时,JVM就会将CPU资源切换给AWT-EventQuecue线程,AWT-EventQuecue线程就会来处理这个事件,比如,你单击了程序中的按钮,触发ActionEvent事件,AWT-EventQuecue线程就立刻排队等候执行处理事件的代码。
  • 守护线程

  • 线程默认是非守护线程,线程在运行之前必须设置自己是否为守护线程。可以调用voidsetDaemon(boolean on)来将自己设置成一个守护线程。当所有非守护线程运行结束时,守护线程一定会跟着结束。

代码调试中的问题和解决过程

  • 问题1:Error:(17, 41) java: 不兼容的类型: int无法转换为java.lang.String
  • 问题1解决方案:是前边的产品代码和后边的测试代码,参数顺序不一致导致,修改使其顺序对应即可。

代码托管

statistics.sh脚本的运行结果截图

上周考试错题总结

学习进度条(四月份继三月份)

  代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标   5000行 8篇 100小时  
第一周 13/13 4/4 12/12  
第二周     309/322 1/5 13/25  
第三周     614/923 1/6 15/40  
第四周       384/1379 2/8 12/52  
第五周       565/1954 1/9 12/64  
第六周     1080/3034 4/13 15/79  
第七周       671/3705 2/15 12/91  
第八周       597/4302 3/18 12/103  
第九周     1533/5238 4/22 12/115  
第十周      841/6043 4/26 15/130  

尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。 耗时估计的公式 :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

参考:软件工程软件的估计为什么这么难软件工程 估计方法

  • 计划学习时间:12

  • 实际学习时间:15

  • 改进情况:继续保持稳定前进

(有空多看看现代软件工程 课件软件工程师能力自我评价表)

参考资料

最新文章

  1. python3 与 pip3 安装与使用
  2. [翻译] AKKA笔记- ACTORSYSTEM (配置CONFIGURATION 与调度SCHEDULING) - 4(一)
  3. 原生JS实战:分享一个首页进度加载动画!
  4. PL/SQL %TYPE和%ROWTYPE的区别【转】
  5. 自定义属性 view
  6. C/C++中各种类型int、long、double、char表示范围(最大最小值)(转)
  7. 查看Linux系统网卡信息
  8. 从robots.txt開始网页爬虫之旅
  9. Count the string - HDU 3336(next+dp)
  10. c# 项目带皮肤一起打包发布解决办法
  11. flume-1.6.0单节点部署
  12. android性能优化的一些东西
  13. ORM 实现数据库表的增删改查
  14. WebSocket 开发模拟客户端与有游戏服务器通信
  15. android wheelview实现三级城市选择
  16. 我们身边那些优秀的.NET开发者-
  17. 关于spring boot中的pageHelper的mybatis插件使用
  18. python request 和requests 的区别
  19. 编程语言吐槽之Java与C
  20. 数据仓库分层ODS DW DM 主题 标签

热门文章

  1. linux服务器之间互传文件
  2. 2-django配置
  3. Flask-wtf导入Regexp规则库验证手机号码合法性(测试通过)
  4. 04、DAT图像文件
  5. django Paginator 让分页变得完美
  6. 史上最简单JS复制功能,兼容安卓ios!
  7. React结合AntD的upload组件写头像上传
  8. jQuery+Ajax实现图片的预览和上传
  9. 使用IL DASM来查看接口内的自动属性
  10. Codeforces Round #575 (Div. 3) B. Odd Sum Segments (构造,数学)