学号20《Java程序设计》第十一周学习总结(第十二章的学习总结)

  • 教材学习内容总结

第十二章:

java多线程机制:

java语言的一大特性就是内置对多线程的支持,新建的线程要经历4中状态:新建、运行、中断以及死亡。

线程的优先级可以通过setPriority(int grade)方法调整,该方法需要一个int类型参数。

在编写Thread类的子类时,要重写弗雷德run()方法,其目的是规定现成的具体操作,否则线程什么也不做,因为父类的run()方法中没有任何操作语句。

线程的常用方法:start()方法:只有新建状态的线程才可以调用start()方法,调用之后开始排队等待CPU资源了。

Run()方法:当run方法执行完毕,线程就变成死亡状态,在线程没有结束run()方法之前,不赞成让线程再调用start()方法。

Sleep(int millsecond):线程的调度执行是按照其优先级的高低顺序进行的,当高级别的线程未死亡时,低级别线程没有机会获得CPU资源。

isAlive()方法:在线程的run()方法结束之前,既没有进入死亡状态之前,线程调用isAlive()

方法返回true。在线程进入死亡状态后,线程仍可以调用方法isAlive(),这时返回的值为false。

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

Interrupt()方法:interrupt方法经常用来“吵醒”休眠的线程。

线程同步:java程序中可以存在多个线程,但是在处理多线程问题时,必须注意这样一个问题:当两个或多个线程同时访问同一个变量,并且一些线程需要修改这个变量。程序应对这样的问题做出处理,否则可能发生混乱。

协调同步的线程:应当用notifyAll()方法通知所有由于使用这个同步方法而处于等待的线程结束,遵循“先中断先继续”的原则。

计时器线程:Timer类在javax.swing包中(在java.util包中也有),注意计时器的监视器必须是组件类(例如JFrame、JButton等)的子类的实例,否则计时器无法启动。

 

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

1、建立线程有几种方法?

  两种方法:用Thread类或其子类。

  1. 怎样设置线程的优先级?

   使用setPriority(int grade)方法。

  1. 在多线程中,为什么要引入同步机制?

  java程序中可以存在多个线程,但是在处理多线程问题时,必须注意这样一个问题:当两个或多个线程同时访问同一个变量,并且一些线程需要修改这个变量。程序应对这样的问题做出处理,否则可能发生混乱。

  1. 线程在什么状态时调用isAlive()方法返回的值是false?

  新建和死亡状态。

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

1、在同一个程序中,分别使用start()和run(),会出现怎么样的结果?

当使用start()时,JVM会认为这个应用程序共有两个线程;当使用run()时,JVM认为这个应用程序只有一个主线程。

  1. 在两个程序中,计时器的启动一个是成功,一个是失败的,这是为什么?

在第一个程序中,class A是组件类的子类,所以程序结果是正常的,而后面那一个是只是实现了接口,就是监视器,从而在运行结果中没有出现我们想要的计时器。

四、其他(感悟)

   在自学第十二章内容的时候,发现很多程序其实都是差不多的,只是要注意的地方也是很多,特别是在程序中使用start()方法和run()方法时,程序结果完全不一样;然后就是在同一个程序中同时出现它们两个的时候,会发现一个很奇妙的结果,例如课后习题第三大题的第三和第四个程序,第四个程序创建多了一个Target对象,然后结果跟第三个程序的完全不一样。

五、学习进度条

 

代码行数(新增/累积)

博客量(新增/累积)

学习时间(新增/累积)

重要成长

目标

5000行

30篇

400小时

 

第一周

10行

1篇

3小时

 

第二周

20行

2篇

10小时

 

第三周

20行

3篇

10小时

 

第四周

30行

4篇

3小时

 

第五周

50行

5篇

5小时

 

第六周

10行

6篇

5小时

 

第七周

10行

7篇

5小时

 

第八周

10行

8篇

5小时

 

第九周

10行

9篇

5小时

 

第十周

10行

10篇

3小时

 

第十一周

20行

11篇

5小时

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值