20145123刘森明《Java程序设计》第六周学习总结

教材学习内容总结

十章

串流设计的概念 Java将输入/输出抽象化为串流,数据有来源及目的地,衔接两者的是串流对象。数据就好比水,串流就像水管,通过水管的衔接,水由一端流向另一端。从应用程序角度来看,若要将数据从来源取出,可以使用输入串流,要将数据写入目的地,可以使用输出串流。在Java中,输入串流代表对象为java.io.InputStream实例,输出串流代表对象为java.io.OutputStream实例。无论数据源和目的为何,只要取的InputStream或者OutputStream的实例,操作输入输出的方法是一致的。 

十一章

之前学习的各种实例都是单线程的,即程序从main()进入后只有一个流程,但是在设计时候可以根据需要拥有多个流程,就是多线程(Multi-thread)程序

  1. Thread和Runable:

JVM即一台虚拟机,只有主线程的CPU,如果想增加CPU就得创建thread实例,CPU执行的进入点,定义在Runnable的run()方法中

撰写多线程程序可以操作Runnable接口,也可以继承Thread类,重新定义run()方法,但操作Runnable接口会使得程序更富弹性

      2.  线程生命周期

 Daemon线程:在所有的非Daemon线程结束时,JVM就会自动终止

 基本状态图:start—>runnable—>(blocked)—>running—>dead , Thread.sleep()、wait()阻断、输入输出完成等都会让线程进入blocked状态,当某线程进入Blocked,最好让另一线程进入running状态,避免cpu空闲下来,是改进效能的方式之一。 

join():安插线程,在A执行的时候插入B,等B完成后在进行A(可以指join()的时间,如join(1000)即为加入线程最多执行1000毫秒)

      3.  等待和通知

wait():指定等待排班时间

notify():通知加入排班

notifyall():锁定竞争,通知所有等待中的线程参与排班

      4.  并行API

Lock、ReadWriteLock和Condition:提供类似synchronized、wait()、notify()、notifyall()的作用以及更多高级功能

Executor :Executor接口可以将Runnable的指定与实际如何执行分离

Future与Callable搭配使用

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

敲书上327页的代码的时候,出现了和书上不一样的结果,询问同学也知道了是某两行代码出现了问题。然后及时的修改了。

学习进度条

  代码行数 博客数量 学习时间 学习心得
目标 4000 30 300  
第五周 1470 6 68  
第六周 700/2170 2/8 15/83  

 

 
posted on 2016-04-10 22:36  坂田银时丶  阅读(180)  评论(2编辑  收藏  举报