20165329 《Java程序设计》第八周学习总结

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脚本的运行结果截图)

posted @ 2018-04-21 16:08  hjw459995  阅读(96)  评论(0编辑  收藏  举报