20144303 《Java程序设计》第六周学习总结

时间:2020-12-11 19:23:11

20144303 《Java程序设计》第六周学习总结

教材学习内容总结

第十章输入和输出

  • Java是以串流(Stream)的方式来处理输入与输出。
  • 串流是一种抽象观念,从键盘输入资料,将处理结果输入档案,以及读取档案的内容等动作皆视为串流的处理。
  • 每次从Inputstream读入的数据,都会先置入byte数据,她的read()方法会尝试读入btye的数据,并返回读入的字节
  • 可以使用System的setIn()方法指定InputStream实例,重新指定标准输入来源
  • FileInputStream是InputStream的子类,主要操作InputStream的read()抽象方法;FIleOutputStream是OutputStream的子类,主要操作其write()的操作方法。
  • ByteArrayInputStream是InputStream的子类,可以指定byte数据创建实例,主要操作其read()抽象方法;ByteArrayOutputStream是OutputStream的子类,主要操作其write() 的操作方法
  • printWriter与PrintStream处理可以对OutputStream打包之外,Printwriter还可以对writer进行打包,提供print()、println()、format()等方法。
  • StringReader可以将字符串打包,当做读取来源,StringWriter可以作为写入目的地,最后toString()取得所有写入的字符组成的字符串。CharArrayReader、CharArrayWriter类似,将char数组当做读取来源以及写入目的地。
  • 如果处理串流字节数据,将这些字节数据转换为对应的编码制度,可以使用 InputStringReader、InputStringWriter打包。

第十一章线程与并行API

  • 单线程程序:启动的程序从main()程序进入点开始至结束只有一个流程
  • 在java中,如果想在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run()方法中。
  • 在java中,从main()开始的流程会由主线程执行,可以创建Thread实例来执行Runnable实例定义的run()方法。
  • 操作Runnable接口的好处就是较有弹性,你的类还有机会继承其他类。若继承了Thread,那该类就是一种Thread,通常是为了直接利用Thread中定义的一些方法,才会继承Thread来操作。
  • 线程完成run()方法后,就会进入Dead,进入Dead(或已经调用过start()方法)的线程不可以再次调用start()方法,否则会抛出IllegalArgumentException。
  • 如果要停止线程,最好自行操作,让线程跑完应有的流程,而非调用Thread的stop()方法。不仅停止线程必须自行根据条件操作,线程的暂停、重启,也必须视需求操作,而不是直接调用suspend()、resume()等方法。
  • 每个线程产生时,都会归入某个线程群组,这视线程是在哪个群组中产生,如在main()主流程中产生一个线程,该线程会属于main线程群组。如果没有指定,则归入产生该子线程的线程群组,也可以自行指定线程群组,线程一旦归入某个群组,就无法更换群组。
  • ConcurrentHashMap是ConcurrentMap的操作类,ConcurrentNavigableMap是ConcurrentMap的子接口,其操作类为ConcurrentSkipListMap,可视为支持并行操作的TreeMap版本。
  • 在使用高级并行API时,Lock接口的操作对象可实现synchronized的功能。
  • 在使用高级并行API时,Condition接口的操作对象可实现Object的wait()、notify()、notifyAll()功能。
  • 在使用高级并行API时,Future接口的操作对象可以让你在未来取得执行结果。

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

代码运行结果截图:

20144303 《Java程序设计》第六周学习总结
20144303 《Java程序设计》第六周学习总结
20144303 《Java程序设计》第六周学习总结
20144303 《Java程序设计》第六周学习总结
20144303 《Java程序设计》第六周学习总结
20144303 《Java程序设计》第六周学习总结
20144303 《Java程序设计》第六周学习总结

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

java学习已经到第六周了,之前学习过程中也有很多内容了解的不是很透彻,准备从这周开始认真的看看学习视频,把每个知识点都彻底理解。

代码托管截图:

20144303 《Java程序设计》第六周学习总结
20144303 《Java程序设计》第六周学习总结
20144303 《Java程序设计》第六周学习总结
20144303 《Java程序设计》第六周学习总结

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 20/20 1/1 5/5
第二周 50/70 1/2 7/12
第三周 300/370 1/3 12/24
第四周 500/870 1/4 10/34
第五周 600/1470 1/5 10/44
第六周 1000/2470 1/6 15/59

参考资料