20175212童皓桢 《Java程序设计》第十周学习总结

学号 2016-2017-2 《Java程序设计》第X周学习总结

教材学习内容总结

1、Java中的线程的状态

建的线程在它的一个完整的生命周期中一般要经历以下的四种状态:html

1.新建: 当一个Thread类或其子类的对象被声明并建立时,新生的线程对象处于新建状态。java

2.运行 :线程必须调用start()方法(从父类继承的方法)通知JVM,这样JVM就会知道又有一个新一个线程排队等候切换了。一旦轮到它来享用CPU资源时,此线程的就能够脱离建立它的主线程独立开始本身的生命周期了。git

3.中断:有4种缘由的中断:多线程

JVM将CPU资源从当前线程切换给其余线程,使本线程让出CPU的使用权处于中断状态。学习

线程使用CPU资源期间,执行了sleep(int millsecond)方法,使当前线程进入休眠状。线程

线程使用CPU资源期间,执行了wait()方法。设计

线程使用CPU资源期间,执行某个操做进入阻塞状态。调试

4.死亡 :处于死亡状态的线程不具备继续运行的能力。线程释放了实体code

2、 Thread类与线程的建立

使用Thread建立线程一般使用的构造方法是:htm

Thread(Runnable target)

在建立线程对象时必须向构造方法的参数传递一个实现Runnable接口类的实例,该实例对象称做所创线程的目标对象,当线程调用start()方法后,一旦轮到它来享用CPU资源,目标对象就会自动调用接口中的run()方法(接口回调)。

3、线程经常使用方法

1.start() : 线程调用该方法将启动线程,使之重新建状态进入就绪队列排队,一旦轮到它来享用CPU资源时,就能够脱离建立它的线程独立开始本身的生命周期了。

2.run(): Thread类的run()方法与Runnable接口中的run()方法的功能和做用相同,都用来定义线程对象被调度以后所执行的操做,都是系统自动调用而用户程序不得引用的方法。

3.sleep(int millsecond): 优先级高的线程能够在它的run()方法中调用sleep方法来使本身放弃CPU资源,休眠一段时间。

4.isAlive(): 线程处于“新建”状态时,线程调用isAlive()方法返回false。在线程的run()方法结束以前,即没有进入死亡状态以前,线程调用isAlive()方法返回true。

5.currentThread():该方法是Thread类中的类方法,能够用类名调用,该方法返回当前正在使用CPU资源的线程。

6.interrupt() :一个占有CPU资源的线程可让休眠的线程调用

4、 线程同步

在处理多线程问题时,咱们必须注意这样一个问题:当两个或多个线程同时访问同一个变量,而且一个线程须要修改这个变量。咱们应对这样的问题做出处理。

在处理线程同步时,要作的第一件事就是要把修改数据的方法用关键字synchronized来修饰。

所谓线程同步就是若干个线程都须要使用一个synchronized修饰的方法。

5、 线程联合

一个线程A在占有CPU资源期间,可让其它线程调用join()和本线程联合,如:
B.join();

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

教材学习有问题先去https://shimo.im/doc/1i1gldfsojIFH8Ip/看看,若是别人没有提出相同问题,能够编辑文档添加,而后把本身提出的问题复制到下面:

  • 问题1:实做Runnablerun()中定义额外流程好?仍是继承Threadrun()中定义额外流程好?
  • 问题1解决方案:实做Runnable接口的好处就是较有弹性,你的类别还有机会继承其它类别

若继承了Thread,那该类别就是一种Thread,一般是为了直接利用Thread中定义的一些方法,才会继承Thread来实做

若是主线程中启动了额外线程,预设会等待被启动的全部线程都执行完run()方法才停止JVM。

若是一个Thread被标示为Daemon线程,在全部的非Daemon线程都结束时,JVM自动就会终止。

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

代码托管

输入图片说明

上周考试错题总结

  • 下列关于HashMap 泛型类经常使用方法的介绍,正确的是

A .public boolean isEmpty()若是此映射不包含键-值映射关系,则返回 true。

B .public V get(Object key)返回指定键所映射的值;若是此映射不包含该键的映射关系,则抛出异常。

C .public V put(K key, V value) 在此映射中关联指定值与指定键。若是该映射之前包含了一个该键的映射关系,则以先定义的值为准。

D .public Object clone()返回此 HashMap 实例的浅表副本:并不复制键和值自己。

解析:查询API。B项:若是此映射不包含该键的映射关系,则返回null。C项:若是该映射之前包含了一个该键的映射关系,则旧值被替换。

结对及互评

评分标准

  1. 正确使用Markdown语法(加1分):
    • 不使用Markdown不加分
    • 有语法错误的不加分(连接打不开,表格不对,列表不正确...)
    • 排版混乱的不加分
  2. 模板中的要素齐全(加1分)
    • 缺乏“教材学习中的问题和解决过程”的不加分
    • 缺乏“代码调试中的问题和解决过程”的不加分
    • 代码托管不能打开的不加分
    • 缺乏“结对及互评”的不能打开的不加分
    • 缺乏“上周考试错题总结”的不能加分
    • 缺乏“进度条”的不能加分
    • 缺乏“参考资料”的不能加分
  3. 教材学习中的问题和解决过程, 一个问题加1分

  4. 代码调试中的问题和解决过程, 一个问题加1分

  5. 本周有效代码超过300分行的(加2分)
    • 一周提交次数少于20次的不加分
  6. 其余加分:
    • 周五前发博客的加1分
    • 感想,体会不假大空的加1分
    • 排版精美的加一分
    • 进度条中记录学习时间与改进状况的加1分
    • 有动手写新代码的加1分
    • 课后选择题有验证的加1分
    • 代码Commit Message规范的加1分
    • 错题学习深刻的加1分
    • 点评认真,能指出博客和代码中的问题的加1分
    • 结对学习状况真实可信的加1分
  7. 扣分:
    • 有抄袭的扣至0分
    • 代码做弊的扣至0分
    • 迟交做业的扣至0分

点评模板:

  • 博客中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 代码中值得学习的或问题:
    • xxx
    • xxx
    • ...
  • 基于评分标准,我给本博客打分:XX分。得分状况以下:xxx

  • 参考示例

点评过的同窗博客和代码

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

xxx
xxx

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 6/6 1/1 20/20
第二周 245/251 1/2 18/38
第三周 633/884 1/3 22/60
第四周 305/1189 1/4 30/90
第五周 410/1599 3/7 30/120
第六周 1135/2734 3/10 30/150
第七周 781/3515 3/13 30/180
第八周 710/4225 3/16 30/210
第九周 775/5000 2/18 30/240
第十周 933/5933 1/19 30/270

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

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

  • 计划学习时间:XX小时

  • 实际学习时间:XX小时

  • 改进状况:

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

参考资料

相关文章
相关标签/搜索