• 《Java程序设计》第6周学习总结


    20145318 《Java程序设计》第6周学习总结#

    教材学习内容总结

    输入输出

    InputStream与OutputStream####

    • 从应用程序角度来看,如果要将数据从来源取出,可以使用输入串流;如果要将数据写入目的地,可以使用输出串流。在Java中,输入串流代表对象为java.io.InputStream实例,输出串流代表对java.io.OutputStream实例。无论数据源或目的地为何,只要设法取得InputStream或OutputStream的实例。
    • 在不使用InputStream与OutputStream时,必须使用close()方法关闭串流。由于InputStream与OutputStrem操作了java.io.Closeable接口,其父接口为java.lang.AutoCloseable接口。
    • 在java中,如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run()方法中。
      在java中,从main()开始的流程会由主线程执行,可以创建Thread实例来执行Runnable实例定义的run()方法。
    • JVM是台虚拟计算机,只安装一颗称为主线程的CPU,可执行main()定义的执行流程。如果想要为JVM加装CPU,就是创建Thread实例,要启动额外CPU就是调用Thread实例的start()方法,额外CPU执行流程的进入点,可以定义在Runnale接口的run()方法中。
    • 操作Runnable接口的好处就是较有弹性,你的类还有机会继承其他类。若继承了Thread,那该类就是一种Thread,通常是为了直接利用Thread中定义的一些方法,才会继承Thread来操作。
    • 线程存取同一对象相同资源时可能引发竞速情况,这样的类为不具备线程安全的类;
      每个对象都会有个内部锁定,或称为监控锁定。

    字符处理类

    • Reader抽象类:用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率或其他功能。
    • Writer抽象类:写入字符流的抽象类。子类必须实现的方法仅有 write(char[], int, int)、flush() 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率或其他功能。
    • FileReader、FileWriter则可以对文档做读取与写入,读取或写入时默认会使用操作系统默认编码来做字符转换。在启动JVM时,可以指定-Dfile.encoding来指定FileReader、FileWriter所使用的编码。

    • Reader、Writer中也有一些装饰器类,InputStreamReader和OutputStreamWriter可以对串流数据打包,BufferedReader、BufferedWriter可对Reader、Writer提供缓冲区作用,在处理字符输入/输出时,对效率也会有所帮助。PrintWriter与PrintStream使用上极为类似,不过除了可以对OutputStream打包之外,PrintWriter还可以对Writer进行打包,提供print()、println()、format()等方法。

    线程与并行API

    • 在java中,如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run()方法中。
      在java中,从main()开始的流程会由主线程执行,可以创建Thread实例来执行Runnable实例定义的run()方法。
    • JVM是台虚拟计算机,只安装一颗称为主线程的CPU,可执行main()定义的执行流程。如果想要为JVM加装CPU,就是创建Thread实例,要启动额外CPU就是调用Thread实例的start()方法,额外CPU执行流程的进入点,可以定义在Runnale接口的run()方法中。
    • 安插线程:当线程使用join()加入至另一个线程时,另一个线程会等待被加入的线程工作完毕,然后在继续它的动作,join()的意思表示将线程加入称为另一个线程的流程中。
    • 停止线程:线程完成run()方法后,就会进入Dead,进入Dead的线程不可以再次调用start()方法,否则会抛出IllegalThreadStateException异常。
    • 可以使用以下程序片段取得目前线程所属线程群组名:Thread.currentThread().getThreadGroup().getName()。ThreadGroup的某些方法,可以对群组中所有线程产生作用,例如interrupt()方法可以中断群组中所有线程,setMaxPriority()方法可以设定群组中所有线程最大优先权,activeCount()方法获取群组的线程数量 ,enumerate()方法要传入Thread数组,这会将线程对象设定至每个数组索引。
    • CopyOnWriteArrayList操作了List接口,CopyOnWriteArraySet操作了Set接口,BlockedQueue是Queue的子接口,ConcurrentMap是Map的子接口.ConcurrentHashMap是ConcurrentMap的操作类,ConcurrentNavigableMap是ConcurrentMap的子接口,其操作类为ConcurrentSkipListMap,可视为支持并行操作的TreeMap版本。

    代码托管截图

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

    本周内容较多,实验较多,通过实验练习实际操作中的代码编写过程,发现很多东西在书上学不到,以后更应该增强实际应用。我认为老师说的方法有道理,可以先快速的把书看一遍,真正编写代码的时候有不会的地方回头查书。

    学习进度条

    参考资料

  • 相关阅读:
    C# 与Sql server 获取数据和执行命令
    关于*.ashx 处理程序调试时 未能创建类型 错误
    winform 利用Http向服务器上传与下载文件
    CSS 使用absolute 是<div>居中
    C# int[,] 和 int[][]
    《Head First JavaScript》 学习笔记
    【单片机】关于头文件
    【单片机】【710】定时器
    【C#】委托
    【C#】关于接口的理解
  • 原文地址:https://www.cnblogs.com/zy1111/p/5376450.html
Copyright © 2020-2023  润新知