20145105 《Java程序设计》第6周学习总结
20145105 《Java程序设计》第6周学习总结
教材学习内容总结
第十章 输入/输出
一、InputStream与OutputStream
(一)串流设计的概念
输入串流代表对象:java.io.InputStream
输出串流代表对象:java.io.OutputStream
将某个文档读入并另存为另一个文档:
从HTTP服务器读取某个网页,并另存为文档
(二)串流继承结构
标准输入/输出:
- 使用System的setIn(),重新指定标准输入来源。
- 使用System的setOut(),将结果输出至指定目的地。
(三)串流处理装饰器
BufferedInputStream与BufferedOutputStream
- 提供内部缓冲区功能
DataInputStream与DataOutputStream
- 用来装饰InputStream等提供读取、写入Java基本数据类型的方法
ObjectInputStream与ObjectOutputStream
- 提供readObject()将数据读入为对象,writeObject()将对象写至目的地
二、字符处理类
(一)Reader与Writer继承架构
针对字符读取:java.io.Reader类
针对字符写入:java.io.Writer类
(二)字符处理装饰器
InputStreamReader与OutputStreamWriter
- 对串流数据打包
BufferedReader与BufferedWriter
- 对Reader、Writer提供缓冲区
PrintWriter
- 对Writer进行打包
第十一章 线程与并行API
一、线程
(一)线程简介
[范例TortoiseHareRace](http://git.oschina.net/schwarizard/Chapter-11/blob/master/TortoiseHareRace?dir=0&filepath=TortoiseHareRace&oid=dc06bda11591ac12e1cee75c409aea268c8c4c1f&sha=db18b24bfd822ddb2170d450abd0d47f80fe2c1e)
Java中,可以通过撰写类操作java.lang.Runnable接口,流程进入点操作在run()方法中,创建Thread实例来执行run()方法。
(二)Thread与Runnable
- 操作Runnable接口较有弹性,还有机会继承其他类。
- 继承Thread通常是为了直接利用Thread中定义的一些方法。
(三)线程生命周期
Daemon线程
- 所有非Daemon线程都结束时,JVM自动终止。
Thread基本状态图
- Runnable:可执行
- Blocked:被阻断
- Running:执行中
安插线程
- 使用join()可以将线程加入成为另一线程的流程中。
停止线程
- 使用stop()会直接释放所有已锁定对象,可能使对象陷入无法预期状态。
(四)关于ThreadGroup
(五)synchronized与volatile
使用synchronized
- 执行方法必须取得该实例的锁定
- 不正确使用synchornized可能造成效能低落或死结
使用volatile
- 可以达到变量范围
- 可以在变量上声明volatle,表示变量是不稳定、易变的。
(六)等待与通知
调用锁定对象的wait方法,线程会释放对象锁定,并进入对象等待集合(阻断状态)
放在等待集合的线程不会参与CPU排班,wait()可以指定等待时间。
线程被notify()或时间到时,再开始执行。
二、并行API
(一)Lock、ReadWriteLock与Condition
使用Lock
- Lock接口主要操作类之一是ReentrantLock,可以达到syncharonized的作用。
- Lock还定义tryLock()方法。
使用ReadWriteLock
- ReadWriteLock接口定义了读取锁定与写入锁定行为
使用StampedLock
- StampedLock类可支持乐观读取
使用Condition
- Condition接口用来搭配Lock
(二)使用Executor
java.util.concurrent.Executor接口可将Runnable的指定与实际执行分离。
[范例ThreadPerTaskExecutor]
使用ThreadPoolExeecutor
使用ScheduledThreadPoolExecutor
使用ForkJoinPool
代码调试中的问题和解决过程
- 很多代码运行时都会出现如下情况,尚未解决
其他(感悟、思考等,可选)
因为上传博客时死机了(可能是同时开启的程序太多),强制关机后很多东西都不见了,还要重新再写一遍,知识点还好,代码打的简直心累,希望下周不要再发生这种事了
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3000行 | 15篇 | 300小时 | |
第一周 | 70/70 | 2/2 | 14/14 | |
第二周 | 150/220 | 1/3 | 18/32 | |
第三周 | 400/620 | 1/4 | 35/67 | |
第四周 | 850/1470 | 1/5 | 30/97 | |
第五周 | 560/2030 | 1/6 | 34/131 | |
第六周 | 970/3000 | 2/8 | 46/177 |
参考资料
20145105 《Java程序设计》第6周学习总结的更多相关文章
- 20145213《Java程序设计》第九周学习总结
20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...
- 20145213《Java程序设计》第二周学习总结
20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...
- 20145213《Java程序设计》第一周学习总结
20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...
- 21045308刘昊阳 《Java程序设计》第九周学习总结
21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...
- 20145330孙文馨 《Java程序设计》第一周学习总结
20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...
- 20145337 《Java程序设计》第九周学习总结
20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...
- 20145337 《Java程序设计》第二周学习总结
20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...
- 20145218《Java程序设计》第一周学习总结
20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...
- 《Java程序设计》第九周学习总结
20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...
- 《Java程序设计》第二周学习总结
20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...
随机推荐
- Solr学习笔记之问题汇总
一. 问题描述:Solr在建立索引时候出现如下错误:org.apache.solr.common.SolrException: Document [null] missing required fie ...
- POJ 1986 - Distance Queries - [LCA模板题][Tarjan-LCA算法]
题目链接:http://poj.org/problem?id=1986 Description Farmer John's cows refused to run in his marathon si ...
- Kettle 4.2源码分析第三讲--Kettle 转换机制transformation介绍
转换机制 每个转换步骤都是ETL数据流里面的一个任务.转换步骤包括输入.处理和输出.输入步骤从外部数据源获取数据,例如文件或者数据库:处理步骤处理数据流,字段计算,流处理等,例如整合或者过滤.输出步骤 ...
- Apple Pay的实现
首先是搜到的大神写的全套知识点:http://www.jianshu.com/p/8d7b86f1d142 http://www.cnblogs.com/dashunzi/archive/2016/0 ...
- chrome Sources选项卡 设置JavaScript事件断点
chrome console 可以查看执行的javascript么? 举个例子: 比如这张图片,163邮箱,我点击上一封邮件和下一封邮件执行的是javascript方法. 虽然在chrome的cons ...
- C# ArcEngine TOCControl上实现右键
第一种方法:使用contextMenuStrip控件 1.新建一个窗体AttributeTable,并定义一个全局变量mLayer,让主窗体里面的axMapControl1的layer传进来,从而获取 ...
- 特征向量-Eigenvalues_and_eigenvectors#Graphs 线性变换
总结: 1.线性变换运算封闭,加法和乘法 2.特征向量经过线性变换后方向不变 https://en.wikipedia.org/wiki/Linear_map Examples of linear t ...
- Alisha’s Party---hdu5437(模拟+优先队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5437 题意:公主有k个朋友来参加她的生日party,每个人都会带价值为v[i]的礼物过来,在所有人到齐 ...
- sass和css的calc运算
1.sass不识别不同单位之间的计算,而calc则没问题. width: #{1rem - 2px}; /*出错*/ width: calc(1rem - 2px); 通常情况定制css样式,我不需要 ...
- react.js 之 create-react-app 命令行工具系统讲解
react.js 教程之 create-react-app 命令行工具系统讲解 快速开始 npm install -g create-react-app create-react-app my-app ...