20155323 2016-2017-2 《Java程序设计》第6周学习总结
教材学习内容总结
- 串流:衔接数据的来源和目的地就是串流对象。
- I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。
- Java的IO模型设计非常优秀,它使用Decorator模式,按功能划分Stream,您可以动态装配这些Stream,以便获得您需要的功能。例如,您需要一个具有缓冲的文件输入流,则应当组合使用FileInputStream和BufferedInputStream。
- 对输入流只能进行读操作,对输出流只能进行写操作,程序中需要根据待传输数据的不同特性而使用不同的流
- java中将输入输出抽象称为流。
- 通过创建Thread实例来执行Runnable实例定义的> run方法可以实现多个线程。
- 继承Thread类也可以进行多个进程,但没有Runnable的弹性好,运用Lambda表达式也可以简化程序。
- ThreadGroup:用来管理群组中的线程,enumerate可以取得群组中的所有线程,activecount()用来取得线程的数量。
- synchronized&&volatile:线程存取同一对象相同资源时可能会引发竞速情况。
- Executor:HashMap、TreeMap为两个常用操作类。
- .并行Collection:CopyOnWriteArraySet操作set接口,使用于一个很少进行写入操作,而使用迭代器频繁的情境。
- 线程若调用get()方法进行读取操作,先取得读取锁定,这样其他线程后续也可再取得读取锁定。
- +Condition,其中的await()、signal()、signalAll()方法可视为Object的wait()、notify()、notifyAll()方法的对应。
教材学习中的问题和解决过程
不清楚start()方法和run()方法的区别
经过查阅资料之后我明白了:只有调用了start()方法,才会表现出多线程的特性,不同线程的run()方法里面的代码交替执行。如果只是调用run()方法,那么代码还是同步执行的,必须等待一个线程的run()方法里面的代码全部执行完毕之后,另外一个线程才可以执行其run()方法里面的代码。
代码调试中的问题和解决过程
我发现自己的每个代码都出现了这个提示
代码托管
- 代码提交过程截图:
点评过的同学博客和代码
20155326
20145231
20145209
20155202
20155302
感想
这周由于要放假,学习有些松懈,希望下个周能更加努力。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 100/100 | 1/4 | 10/10 | |
第二周 | 100/200 | 1/5 | 10/20 | |
第三周 | 100/300 | 1/6 | 10/30 | |
第四周 | 300/700 | 1/7 | 10/40 | |
第五周 | 400/1100 | 1/8 | 20/60 | |
第六周 | 300/1400 | 1/9 | 20/80 |