20165336 2017-2018-2 《Java程序设计》第8周学习总结
教材学习内容总结
第十二章
1、程序:一段静态的代码.进程:程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。
2、线程的状态与生命周期:新建,运行,中断,死亡:
- (1)新建:当一个
Thread
类或其子类的对象被声明并创建时,新生的线程对象处于新建状态。此时它已经有了相应的内存空间和其他资源。 - (2)运行:1、如果线程是Thread的子类创建的,该类中的
run()
方法就立刻执行,且程序必须在子类中重写父类的run()
方法。2、在线程没有结束run()
方法之前,不要让线程再调用start()
方法,否则将发生IllegalThreadStateException
异常 - (3)中断:有4种原因的中断:
JVM将CPU资源从当前线程切换给其他线程,使本线程让出CPU的使用权处于中断状态。
线程使用CPU资源期间,执行了sleep(int millsecond)方法,使当前线程进入休眠状。
线程使用CPU资源期间,执行了wait()方法。
线程使用CPU资源期间,执行某个操作进入阻塞状态。 - (4)死亡:所谓死亡状态就是线程释放了实体,即释放分配给线程对象的内存,处于死亡状态的线程不具有继续运行的能力
3、 线程的常用方法
start()
方法:线程调用该方法启动。run()
方法:与Runnable接口中run()方法的功能和作用相同,只有当该方法运行结束后,线程才能再次调用start()方法。sleep(int millsecond)
方法:调用该方法中断线程,过了参数指定的秒数过后才“醒来”。该方法必须在try-catch语句中调用,因为线程如果在休眠中被打断,会抛出InterruptedException异常。isAlive()
方法:判断线程是否正在运行,若是,返回true,若不是,返回false。注意,一个已经运行的线程在没有进入死亡状态时,不要再给线程分配实体。currentThread()
方法是Thread类中的类方法,返回当前使用CPU的线程。interrupt()
方法用来“唤醒”调用sleep方法而处于睡眠状态的线程。
代码调试中的问题和解决过程
-
问题1:在编写四则运算计算器时在windows命令窗口输入(乘号
*
),报出异常,但是输入带引号的乘号“*”
运行正常。
-
解决方法:根据百度查找解答得知在windows控制台下运行java程序,输入的命令行中有
*(作为乘号使用)
必须写成"*"
这种形式。 -
问题2:数组调用length方法不用带()否则会出现错误。
代码托管
(statistics.sh脚本的运行结果截图)