zoukankan      html  css  js  c++  java
  • 20145203盖泽双 《Java程序设计》第6周学习总结

    20145203盖泽双 《Java程序设计》第6周学习总结

    教材学习内容总结

    1、如果要将数据从来源中取出,可以使用输入串流,若将数据写入目地,
    可以使用输出串流。在java中,输入串流代表对象为
    java.in.InputStream实例,输出串流代表对象为
    java.io.Outputstream实例

    2、在来源与目的地都不知道的情况下可以设计一个通用的dump()方法,该方法接受InputStream与OutputStream实例,分别代表读取数据的来源,以及输出的目的地

    3、每次从Inputstream读入的数据,都会先置入byte数据,她的read()方法会尝试读入btye的数据,并返回读入的字节。

    4、可以使用System的setIn()方法指定InputStream实例,重新指定标准输入来源

    ①FileInputStream是InputStream的子类,主要操作InputStream的read()抽象方法;FIleOutputStream是OutputStream的子类,主要操作其write()的操作方法

    ②ByteArrayInputStream是InputStream的子类,可以指定byte数据创建实例,主要操作其read()抽象方法;ByteArrayOutputStream是OutputStream的子类,主要操作其write() 的操作方法

    5、串流装饰器本身并没有改变InputStream和OutputStream的行为,只是在得到数据之后,再做一些加工处理。

    6、DataInputStream与DataOutputStream主要提供读取、写入java基本数据类型的方法,会自动在指定的类型与字节之间转换。实例代码见git开源中国。

    7、Reader、Writer也有一些装饰器类可供使用,如果串流处理的字节数据,实际上代表某些字符的编码数据,而你想要将这些字节数据转换为对应的编码字符,可以使用InputStreamReader和OutputStreamWriter。若要读入文档、转为字符串并显示在文本模式中,可以使用CharUtil.dump()。

    8、如果处理串流字节数据,将这些字节数据转换为对应的编码制度,可以使用 InputStringReader、InputStringWriter打包。

    9、单线程程序:启动的程序从main()程序进入点开始至结束只有一个流程。

    10、多线程程序:一个程序拥有多个流程。示范代码如下:

    11、撰写多线程程序的方式:操作Runnable接口,在run()中定义额外流程;继承Thread类,在run()中定义额外流程,两者之间的差别是:操作Runnable接口的好处就是较有弹性,类还有机会继承其他类;若继承了Thread类,那该类就是一种Thread,通常是为了直接利用Thread中定义的一些方法,才会继承Thread来操作。

    12、在调用Thread实例start()方法后,基本状态为可执行(Runnable)、被阻断(Blocked)、执行中(Running)。

    13、每个线程产生时,都会归入某个线程群组,这视线程是在哪个群组中产生,如在main()主流程中产生一个线程,该线程会属于main线程群组。如果没有指定,则归入产生该子线程的线程群组,也可以自行指定线程群组,线程一旦归入某个群组,就无法更换群组。

    14、如果在方法上标示synchronized,则执行方法必须取得该实例的锁定。synchronized不只可声明在方法上,也可以描述句方式使用。不正确的使用可能会造成死结。

    15、执行synchronized范围的程序代码期间,若调用锁定对象的wait()方法,线程会释放对象锁定,并进入对象等待集合而处于阻断状态,其他线程可以竞争对象锁定,取得锁定的线程可以执行synchronized范围的程序代码。

    16、放在等待集合的线程不会参与CPU排班,wait()可以指定等待时间,时间到之后线程会再次加入排班,如果指定时间0或不指定,则线程会持续等待,直到被中断(调用interrupt()或是告知notify())可以参与排班。

    17、被竞争锁定的对象调用notify()时,会从对象等待集合中随机通知一个线程加入排班,再次执行synchronized前,被通知的线程会与其他线程共同竞争对象锁定;如果调用notifyAll(),所有等候集合中的线程都会被通知参与排班,这些线程会与其他线程共同竞争对象锁定。

    18、在使用高级并行API时,Lock接口的操作对象可实现synchronized的功能。

    19、在使用高级并行API时,Condition接口的操作对象可实现Object的wait()、notify()、notifyAll()功能。Future接口的操作对象可以让你在未来取得执行结果。

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

    1、不太理解撰写单线程序、多线程程序的方式差别。

    解决方法:操作Runnable接口的好处就是较有弹性,类还有机会继承其他类;若继承了Thread类,那该类就是一种Thread,通常是为了直接利用Thread中定义的一些方法,才会继承Thread来操作。

    其他

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 200/200 2/2 20/20
    第二周 300/500 2/4 18/38
    第三周 500/1000 3/7 22/60
    第四周 300/1300 2/9 30/90
    第六周 500/1400 1/9 20/130

    参考资料

  • 相关阅读:
    div设置参数contenteditable=true
    Html事件总结
    PHP的isset()和empty()比较
    jQuery的ajax和遍历数组json代码
    PHP获取域名的几个函数使用
    关于网站favicon.ico
    PROCEDURE ANALYSE 通过分析select查询结果
    mysql 存在更新 不存在插入
    MySQL Migration Toolkit的使用
    高性能MySQL读书笔记:找出谁持有锁
  • 原文地址:https://www.cnblogs.com/GZSdeboke/p/5376469.html
Copyright © 2011-2022 走看看