zoukankan      html  css  js  c++  java
  • 20145234黄斐《Java程序设计》第六周学习总结

    教材学习内容总结

    第十章 输入/输出

      • 文件的读写
      • 网络上传数据的基础
      • 父类

    InputStream与OutputStream

    • 流(Stream)是对「输入输出」的抽象,注意「输入输出」是相对程序而言的
    • InputStream与OutputStream
    • InputStream、OutStream提供串流基本操作,如果想要为输入/输出的数据做加工处理,则可以使用打包器类。常用的打包器具备缓冲区作用的BufferedOutputStream、BufferedInputStream,具备数据转换处理的DataInputStream、DataOutputStream,具备对象串行化能力的ObjectInputStream、ObjectOutputStream等。
      • read
      • 针对字符数据的读取,Java SE提供了java.io.Reader类,其抽象化了字符数据读入的来源。针对字符数据的写入,则提供了java.io.Writer类。其抽象化了数据写出的目的地。
      • write
      • FileReader、FileWriter则可以对文档做读取与写入,读取或写入时默认会使用操作系统默认编码来做字符转换。在启动JVM时,可以指定-Dfile.encoding来指定FileReader、FileWriter所使用的编码。
      • 二进制文件
    • 标准输入输出
      • System.in: 标准输入,默认关联到键盘(终端输入)
      • System.out: 标准输出,默认关联到显示器(终端输出)
      • System.err: 标准错误,默认关联到显示器(终端输出)
      • 输入输出重定向:setIn,setOut,setErr
    • FileInputStream与FileOutPutStream
    • FileInputStream是InputStream的子类,可以指定文件名创建实例,一旦创建文档就开启,接着就可用来读取数据。FileOutputStream是OutputStream的子类,可以指定文件名创建实例,一旦创建文档就开启,接着就可以用来写出数据。无论FileInputStream还是FileOutputStream,不使用时都要使用close()关闭文档。
      • 文件读写
    • 装饰器类
      • Decorator模式
      • BufferedInputStream与BufferedOutputStream: 内部提供缓冲,提高效率
      • DataInputStream与DataOutputStream:基本数据类型与字节的转换,API好好研究一下
      • ObjectInputStream与ObjectOutputStream
        • java.io.Serializable接口

    字符处理类

    1. Reader Writer:抽象化了数据读入和写出的目的地,会将读入的数据植入char数组中。
    2. 字符处理装饰器:可以使用BufferReader和BufferWriter将数据进行缓冲,增加读写效率。

    第十一章 线程与并行API

    线程

    1. 通过创建Thread实例来执行Runnable实例定义的> run方法可以实现多个线程。
    2. 继承Thread类也可以进行多个进程,但没有Runnable的弹性好,运用Lambda表达式也可以简化程序。
    3. 线程生命周期:Daemon:在所有的非Daemon线程结束时,JVM就会自动终止
    4. ThreadGroup:用来管理群组中的线程,enumerate可以取得群组中的所有线程,activecount()用来取得线程的数量。
    5. synchronized&&volatile:线程存取同一对象相同资源时可能会引发竞速情况。
    6. 等待与通知:wait()、notify()、notifyall()控制线程释放对象的锁定。

    并行API

      • Lock:相对与Thread模型的隐式的锁对象,Lock提供了显式的锁操作从而简化应用程序。Executors:提供了一组HighLevelAPI用来执行和管理并行任务。  ConcurrentCollections(并行集合):包含了一组支持并行处理的数据结构,大大简化了并行编程难度。AtomicVariables(原子变量):减少了同步操作并且避免数据不一致。Fork/Join框架:提供了进程操作的支持。
      • 相对与Thread模型的隐式的锁对象,Lock提供了显式的锁操作从而简化应用程序。Executors:提供了一组HighLevelAPI用来执行和管理并行任务。  ConcurrentCollections(并行集合):包含了一组支持并行处理的数据结构,大大简化了并行编程难度。AtomicVariables(原子变量):减少了同步操作并且避免数据不一致。Fork/Join框架:提供了进程操作的支持。
      • ReadWriteLock:ReadWriteLock接口定义了读取锁定与写入锁定行为,可以使用readLock()、writeLock()方法返回Lock操作对象。ReentrantReadWriteLock是ReadWriteLock接口的主要操作类,readLock()方法会返回ReentrantReadWriteLock.ReadLock实例,writeLock()犯法会返回ReentrantReadWriteLock.WriteLock实例。
      • Condition:Condition接口用来搭配Lock,最基本用法就是达到Object的wait()、notify()、notifyAll()方法的作用。Condition的await()、signal()、signalAll()方法,可视为Object的wait()、notify()、notifyAll()方法的对应。
      • Executor:提供了一组HighLevelAPI用来执行和管理并行任务。
      • ScheduledThreadPoolExecutor:ScheduledExecutorService为ExecutorService的子接口,顾名思义,可以让你进行工作排程:schedule()方法用来排定Runnable或Callable实例延迟多久后执行一次,并返回Future子接口ScheduledFuture的实例,对于重复性的执行,可使用scheduleWithFixedDelay()和scheduleAtFixedRate()方法。
      • ForkJoinPool:所谓分而治之的问题,是指这些问题的解决,可以分解为性质相同的子问题,子问题还可以再分解为更小的子问题,将性质相同的子问题解决并收集运算结果,整体问题也就解决了。
        ForkJoinPool与其他的ExecutorService操作不同的地方在于,它是闲聊了工作窃取演算,其建立的线程如果完成手边任务,会尝试寻找并执行其他任务建立的资额任务,让线程保持忙碌状态,有效利用处理器的能力。需要注意:ForkJoin框架适用于计算密集式的任务,较不适合用于容易造成线程阻断的场合。
    1. 并行Collection:CopyOnWriteArraySet操作set接口,使用于一个很少进行写入操作,而使用迭代器频繁的情境。
    
    
  • 相关阅读:
    python 并发编程 多线程 event
    python 并发编程 多线程 定时器
    python 并发编程 多线程 信号量
    linux top 查看CPU命令
    python 并发编程 多线程 GIL与多线程
    python 并发编程 多线程 死锁现象与递归锁
    python 并发编程 多线程 GIL与Lock
    python GIL全局解释器锁与互斥锁 目录
    python 并发编程 多线程 GIL全局解释器锁基本概念
    执行python程序 出现三部曲
  • 原文地址:https://www.cnblogs.com/taigenzhenjun/p/5796401.html
Copyright © 2011-2022 走看看