20165329 《Java程序设计》第八周学习总结
教材学习内容总结
第十二章学习总结:JAVA多线程机制
-
线程:线程是比进程更小的执行单位,一个进程在其执行过程中,可以产生多个线程,形成多条执行线索,每条线索,即每个线程也有自身的产生、存在和消亡的过程。
-
进程:进程是程序的一次动态执行过程,对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。
-
主线程:该线程负责执行main方法。
-
创建线程:用Thread的子类创建线程对象;直接使用Thread类创建线程对象,构造方法是Thread(Runnable target)。
-
线程的常用方法:
-
start() 线程调用该方法将启动线程;
-
run() 用来定义线程对象被调度之后所执行的操作;
-
sleep(int millsecond) 使优先级别高的线程放弃CPU资源,休眠一段时间。必须在try-catch语句块中调用sleep方法;
-
isAlive() 线程处于“新建”状态时,线程调用isAlive()方法返回false。在线程的run()方法结束之前,即没有进入死亡状态之前,线程调用isAlive()方法返回true。当线程进入死亡状态后,线程调用方法isAlive(),此时的返回值为false。
-
wait()方法可以中断方法的执行,使本线程等待,暂时让出CPU的使用权,并允许其它线程使用这个同步方法
-
notifyAll()方法通知所有的由于使用这个同步方法而处于等待的线程结束等待。曾中断的线程就会从刚才的中断处继续执行这个同步方法,并遵循“先中断先继续”的原则
-
notify()方法只是通知处于等待中的线程的某一个结束等待
线程联合:一个线程A在占有CPU资源期间,可以让其它线程调用join()和本线程联合AWT-EventQuecue线程负责处理GUI事件,AWT-Windows线程负责将窗体或组件绘制到桌面 -
B.join()
若准备联合的B线程已经执行结束,则B.join()不会产生任何效果
使用Timer类的方法start()启动计时器,即启动线程。使用Timer类的方法stop()停止计时器,即挂起线程,使用restart()重新启动计时器,即恢复线程
守护线程:一个线程调用void setDaemon(boolean on)方法可以将自己设置成一个守护(Daemon)线程 -
thread.setDaemon(true);
当程序中的所有用户线程都已结束运行时,即使守护线程的run方法中还有需要执行的语句,守护线程也立刻结束运行 -
GUI线程:当JAVA程序包含图形用户界面(GUI)时,JAVA虚拟机在运行应用程序时会自动启动更多线程,其中AWT-EventQuecue线程负责处理GUI事件,AWT-Windows线程负责将窗体或组件绘制到桌面。
[代码托管]
(statistics.sh脚本的运行结果截图)