• 第八周学习总结


    20165227 2018-4 《Java程序设计》第八周学习总结

    教材学习内容总结

    第十二章

    • Thread类:在编写Thread类的子类的时候,需要重写父类的run()方法,其目的是规定线程的具体操作,否则线程什么都不做,因为父类的run()方法中没有任何操作语句
    • 使用Thread类子类创建线程:在main方法中创建和启动线程,然后在Thread子类中重写run()方法,规定具体操作。结果按照main线程、子类线程的顺序实行
    public class SpeakCar extends Thread {
       public void run() {
       } 
    }
    
    • 使用Thread类直接创建线程:使用构造方法Thread(Runnable target)来创建;该构造方法中的参数是一个Runnable类型的接口
    public class ElephantTarget implements Runnable {
       public void run() {
       } 
    }
    
    • 目标对象与线程的关系:
    • 完全解耦:创建目标对象中并没有不包含对线程对象的引用,需要使用String name = Thread.currentThread().getName();
    • 弱解耦:当创建目标对象的类组合线程对象时,目标对象可以通过获得线程对象的引用 Thread.currentThread(); 在创建目标对象的类中声明
       House() {
          dog=new Thread(this);  //当前House对象作为线程的目标对象 
          cat=new Thread(this); 
       }
    
    • run方法在程序执行的过程中可以多次启动

    • 线程的常用方法;

      • start()启动线程;
        sleep(int millsecond) 休眠线程;
        isAlive() 判断当前线程的状态,false or true;
        currentThread() 返回当前正在使用的线程;
        interrupt() 唤醒处于休眠的线程
    • 线程同步:需要使用用synchronized 修饰的方法
      public synchronized void saveOrTake(int amount) { }

    • 线程联合:join() 方法

    • GUI线程:AWT-EventQuecueAWT-Windows 两个重要的线程

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

    • 问题1:一个线程的run()方法的执行过程中为什么随时可能被强行中断
    • 问题1解决方案:通过教材的学习,了解到这个跟JVM的轮流执行线程的机制有关,在执行一个线程的时候会遇到比如System.out.println("线程执行"); 时候会中断对CPU的使用权
    • 问题2:GUI是什么?
    • 问题2解决方案:参考百度:GUI

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

    • 问题1:在编译教材中的代码的时候出现IllegalThreadStateException异常 的提示

    • 问题1解决方案:通过反复检查和结合教材的知识,了解了不能在线程没有结束run()方法之前调用start()方法,否则就会出现这样的错误提示

    • 问题2:运行教材代码出现两行相同的时间

    • 问题2解决方案:代码中,在一个已经运行的线程还没有进入死亡状态之前,给其再次分配了实体,导致先前的实体成为了不能收集掉的“垃圾”,但依旧会被JVM认为正在运行,所以产生了错误

    代码托管

    上周考试错题总结


    其他(感悟、思考等,可选)

    在这一周的学习中知道了Java的多线程运行,同时也复习了接口、父类子类等之前的知识点,发现对于Java的学习已经开始融会贯通了,所以对于之前的知识就更不能懈怠,需要不断的温习才行

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 210/210 1/1 20/20
    第二周 240/450 1/2 18/38
    第三周 496/946 1/3 22/60
    第四周 624/1570 1/4 30/90
    第五周 843/2413 1/5 24/114
    第六周 733/3146 1/6 20/134
    第七周 628/3774 1/7 21/155
    第八周 1103/4877 1/8 30/185
  • 相关阅读:
    Java学习-sgg-day09-20200425
    Java学习-sgg-day08-20200423
    C#集合
    C#类型转换
    HTML+CSS注意知识点
    easyUI学习(1)
    sort方法根据数组中对象的某一个属性值进行排序
    Vue Router 知识点梳理(二)
    Vue Router 知识点梳理
    浏览器加载、解析、渲染的过程
  • 原文地址:https://www.cnblogs.com/zhuyue-study/p/8908023.html
Copyright © 2020-2023  润新知