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接口的操作对象可以让你在未来取得执行结果。
代码调试中的问题和解决过程
代码运行结果截图:
其他(感悟、思考等,可选)
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 |