20155117王震宇 2016-2017-2 《Java程序设计》第六周学习总结

教材学习内容总结

IO流的分类:

  • 根据流的数据对象来分:
    高端流:所有的内存中的流都是高端流,比如:InputStreamReader
    低端流:所有的外界设备中的流都是低端流,比如InputStream,OutputStream
    如何区分:所有的流对象的后缀中包含Reader或者Writer的都是高端流,反之,则基本上为低端流,不过也有例外,比如PrintStream就是高端流
  • 根据数据的流向来分:
    输出流:是用来写数据的,是由程序(内存)--->外界设备
    输入流:是用来读数据的,是由外界设备--->程序(内存)
    如何区分:一般来说输入流带有Input,输出流带有Output
  • 根据流数据的格式来分:
    字节流:处理声音或者图片等二进制的数据的流,比如InputStream
    字符流:处理文本数据(如txt文件)的流,比如InputStreamReader
    如何区分:可用高低端流来区分,所有的低端流都是字节流,所有的高端流都是字符流
  • 根据流数据的包装过程来分:
    原始流:在实例化流的对象的过程中,不需要传入另外一个流作为自己构造方法的参数的流,称之为原始流。
    包装流:在实例化流的对象的过程中,需要传入另外一个流作为自己构造方法发参数的流,称之为包装流。
    如何区分:所以的低端流都是原始流,所以的高端流都是包装流。

字元处理装饰器

  • 想要将位元组资源转化为对应的编码字元,可以使用InputStreamReader、OutputStreamWriter对串流资料资料包裹。
  • 在建立InputStreamReader与OutputStreamWriter时,可以指定编码,如果沒有指定编码,则以JVM启动时所获取的预设编码來作字元转换。
  • BufferedReader、BufferedWriter可对Reader、Writer提供缓冲区作用 。
    线程
  • 多线程程序即程序拥有多个流程。
  • 在main()以外独立设计流程,可以撰写类操作java.lang.Runnable接口,流程的进入点是操作在run()方法中。从main()开始的流程会由主线程执行,run()方法可以创建Thread实例来执行。启动额外线程执行指定流程,必须调用Thread实例的start()方法。
  • 新建(new Thread):当创建Thread类的一个实例(对象)时,此线程进入新建状态(未被启动)。
  • 就绪(runnable):线程已经被启动,正在等待被分配给CPU时间片,也就是说此时线程正在就绪队列中排队等候得到CPU资源。
  • 运行(running):线程获得CPU资源正在执行任务,此时除非此线程自动放弃CPU资源或者有优先级更高的线程进入,线程将一直运行到结束。
  • 死亡(dead):当线程执行完毕或被其它线程杀死,线程就进入死亡状态,这时线程不可能再进入就绪状态等待执行。自然终止:正常运行run()方法后终止。异常终止:调用stop()方法让一个线程终止运行。
  • 堵塞(blocked):由于某种原因导致正在运行的线程让出CPU并暂停自己的执行,即进入堵塞状态。正在睡眠:用sleep(long t) 方法可使线程进入睡眠方式。一个睡眠着的线程在指定的时间过去可进入就绪状态。正在等待:调用wait()方法。(调用motify()方法回到就绪状态)。被另一个线程所阻塞:调用suspend()方法。(调用resume()方法恢复)。

教材学习中的问题和解决过程

synchronized
在编写教材程序时出现了arrayindexoutofboundsexception异常

因为两个线程同时调用了add()方法,引发竞速情况。所以此时的ArrayList类是不具备线程安全的类。
根据教材提出的方法进行了修改。



在方法上标示synchronized,则执行方法必须取得该实例的锁定。取得锁定后,会回到Runnable的状态,等待cpu排班器排入Running状态。

代码托管

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 0/0 2/2 20/20
第二周 251/251 1/5 18/38
第三周 651/902 1/6 10/48
第四周 300/1400 1/7 10/58
第五周 696/2196 1/8 10/68
第五周 722/2918 1/9 10/78

posted @ 2017-04-02 21:53  20155117王震宇  阅读(163)  评论(5编辑  收藏  举报