zoukankan      html  css  js  c++  java
  • 20165324 《Java程序设计》第八周学习总结

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

    教材学习内容总结

    第十二章 Java多线程机制

    进程与线程

    进程是程序的一次动态执行过程;线程是比进程更小的执行单位
    

    线程的状态与生命周期

    • Java语言使用Thread类及其子类的对象来表示线程,完整的生命周期要经历一下状态:
      1. 新建
      2. 运行:必须调用start()方法通知JVM才会运行
      3. 中断: 四种原因中断
      4. 死亡:原因有二,一为正常运行结束;二为线程被强制提前结束,即强制run()方法结束。

    线程调度与优先级

    • Java虚拟机中的线程调度器负责管理线程,优先级分为10个级别,分别用Thread类中的类常量表示。优先级可以通过setPriority(int grade)方法调整,getPriority方法返回线程的优先级。
    • JVM的线程调度器的任务是使高优先级的线程能始终运行,一旦时间片有空闲,则使具有同等优先级的线程以轮流的方式顺序使用时间片。

    Thread类与线程的创建

    • 使用Thread的子类:编写Thread类的子类时,需要重写父类的run()方法,规范线程的具体操作。
    • 使用Thread类:构造方法为Thread(Runnable target),该构造方法中的参数为一个Runnable类型的接口。

    使用Runnable接口比使用Thread类的子类更具有灵活性

    • 如果一个类继承Thread,则不适合资源共享。但是如果实现了Runable接口的话,则很容易的实现资源共享。

    目标对象与线程的关系

    • 目标对象与线程完全解耦
    • 目标对象组合线程(弱耦合)

    关于run方法启动的次数

    线程的常用方法

    • start(),调用方法启动线程,使其进入就绪队列排队
    • run(),用来定义线程对象被调度之后所执行的操作
    • sleep(int millsecond),调用方法使其放弃CPU资源,休眠。必须在try-catch语句中调用sleep()方法。
    • isAlive(),线程处于新建状态时,线程调用isAlive()方法返回false。
    • currenThread()方法为Thread的类方法,可以用类名调用,返回当前正在使用CPU资源的线程。
    • interrupt(),调用该方法可结束休眠,重新排队等待CPU资源。

    线程同步

    • 概念:程序中若干个线程都需要使用一个方法,而这个方法用synchronized(同步)给予了修饰。多个线程调用该方法必须遵守同步机制。

    协调同步的线程

    • 同步方法中使用wait()方法,中断线程的执行。
    • 同步方法中使用notify()方法,通知所有由于使用这个同步方法而处于等待的线程结束等待。
    • wait(),notify(),notifyAll()都是Object类中的final方法

    线程联合

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

    GUI线程

    • 当Java程序包含图形用户界面(GUI)时,Java虚拟机在运行应用程序时,会自动启动更多的线程,其中有两个重要的线程:AWT-EventQuecueAWT-Windows,前一个负责GUI事件,后一个线程负责将窗体或组件绘制到桌面。

    计时器线程

    守护线程

    • 一个线程可以调用void setDaemon(boolean on)方法,设置为一个守护线程。

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

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

    代码托管

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 203/203 4/4 15/15
    第二周 326/529 2/6 12/27
    第三周 1000/1500 2/8 20/47
    第四周 800/2300 3/11 20/67
    第五周 500/2800 2/13 18/85
    第六周 900/3700 2/15 15/100
    第七周 1100/4800 3/18 15/115
    第八周 1700/6500 1/19 18/133

    参考资料

  • 相关阅读:
    发送短信/邮件/打电话 code(转)
    如何学习算法
    堆和栈的区别
    2010 baidu笔试
    关于TableView中图片的延时加载(转)
    sqlite + UITableView 实现iPhone大数据浏览
    2010 Google中国笔试试题
    海量数据处理方法总结(转)
    IPhone WebApp 设计开发工具与资源(转)
    DynamicDataSet
  • 原文地址:https://www.cnblogs.com/20165324hcj/p/8908533.html
Copyright © 2011-2022 走看看