《Java 多线程编程核心技术》- 笔记
作为业务开发人员,能够在工作中用到的技术其实不多。虽然平时老是说什么,多线程,并发,注入,攻击!但是在实际工作中,这些东西不见得用得上。因为,我们用的框架已经把这些事做掉了。
比如web开发,外面有大量的请求进来,按理说,我们应该考虑并发问题。但其实,spring接到请求,分配到controller之后,就已经是线程安全的了,所以我们要做的就是,从controller开始,到最后请求响应结束,保证线程安全即可。
多线程好像有很多东西需要注意,阅读《Java 多线程编程核心技术》后,做个总结,总体来说,其实也没那么多事,没那么复杂。
1. 多线程基础
java的多线程,就体现在Thread类与Runable接口!共享数据,才存在线程安全问题,不共享数据不存在线程安全。java的很多停止线程的方法已经废除,不建议使用如: resume,stop,suspend方法。设置线程优先级(setPriority)可能提高线程执行的速度。守护线程的存在需要至少一个非守护线程在运行,也就是说守护线程不能独立存在,其能力是比较低的,比如GC就是守护线程,当你的代码在执行时,GC就在运行,随时进行内存回收,当你的程序执行完成后,GC线程就不存在了。
2. 对象及变量的并发访问
synchronized同步方法,锁对象,锁代码块,锁方法,锁变量,
valatile关键字,使用volatile线程解决同步死循环不停止问题。volatile强制从公共堆中获得变量的值,使保持一致性。
3. 线程间通信
wait/notify 是最基本的实现线程间通信的方式。很方便的实现了,消费者/生产者模式。
wait方法后,立即释放锁,notify锁不释放。即wait方法执行后,后续并发请求即可进入该块,而notify则需要等到synchronized代码块执行完成后,才会释放锁。
notifyAll()唤醒所有等待线程。
join()方法释放锁等待线程执行完成。Thread.sleep()不释放锁等待。
通过管道进行通信,以字符流形式传递。PipeWriter,PipeReader,outputSream.connect(inputStream)将输入流与输出联系在 一起。
ThreadLocal,可认为是一个线程级的全局变量,即在本线程中,随处都可以取到该值,而不必担心线程安全问题。set(),get()方法进行设置与取用。
4. Lock的使用
ReentrantLock,
5. 定时器timer
timer.schedule(task, dateRef) 执行一次, timer.schedule(task, dateRef, period) 周期性执行。
6. 单例模式与多线程
if(obj == null) {
synchronized(MyObject.class) {
if(obj == null) {
obj = new MyObject();
}
}
}
额,这么看来,多线程的知识还是好少呢。东西不要太多,够精就行!
不用害怕多线程,不用害怕并发!
《Java 多线程编程核心技术》- 笔记的更多相关文章
- HTML+CSS笔记 CSS笔记集合
HTML+CSS笔记 表格,超链接,图片,表单 涉及内容:表格,超链接,图片,表单 HTML+CSS笔记 CSS入门 涉及内容:简介,优势,语法说明,代码注释,CSS样式位置,不同样式优先级,选择器, ...
- CSS笔记--选择器
CSS笔记--选择器 mate的使用 <meta charset="UTF-8"> <title>Document</title> <me ...
- HTML+CSS笔记 CSS中级 一些小技巧
水平居中 行内元素的水平居中 </a></li> <li><a href="#">2</a></li> &l ...
- HTML+CSS笔记 CSS中级 颜色&长度值
颜色值 在网页中的颜色设置是非常重要,有字体颜色(color).背景颜色(background-color).边框颜色(border)等,设置颜色的方法也有很多种: 1.英文命令颜色 语法: p{co ...
- HTML+CSS笔记 CSS中级 缩写入门
盒子模型代码简写 回忆盒模型时外边距(margin).内边距(padding)和边框(border)设置上下左右四个方向的边距是按照顺时针方向设置的:上右下左. 语法: margin:10px 15p ...
- HTML+CSS笔记 CSS进阶再续
CSS的布局模型 清楚了CSS 盒模型的基本概念. 盒模型类型, 我们就可以深入探讨网页布局的基本模型了.布局模型与盒模型一样都是 CSS 最基本. 最核心的概念. 但布局模型是建立在盒模型基础之上, ...
- HTML+CSS笔记 CSS进阶续集
元素分类 在CSS中,html中的标签元素大体被分为三种不同的类型:块状元素.内联元素(又叫行内元素)和内联块状元素. 常用的块状元素有: <div>.<p>.<h1&g ...
- HTML+CSS笔记 CSS进阶
文字排版 字体 我们可以使用css样式为网页中的文字设置字体.字号.颜色等样式属性. 语法: body{font-family:"宋体";} 这里注意不要设置不常用的字体,因为如果 ...
- HTML+CSS笔记 CSS入门续集
继承 CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代(标签). 语法: p{color:red;} <p> ...
- HTML+CSS笔记 CSS入门
简介: </span>年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的<span>脚本解释程序</span>,作为ABC语言的一种继承. & ...
随机推荐
- SNORT入侵检测系统
SNORT入侵检测系统 YxWa · 2015/10/09 10:38 0x00 一条简单的规则 alert tcp 202.110.8.1 any -> 122.111.90.8 80 (ms ...
- Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again
虚拟机恢复快照后,使用yum安装软件,提示下面的信息,开始以为是yum源的问题或者DNS的问题,但是无果,最后再看一下服务器的时间,坑了,还原快照,时间变成以前的了. [root@localhost ...
- Ubuntu16.04 安装Tensorflow1.7过程记录二:安装CUDA及Tensorflow
参考 How to install Tensorflow 1.7.0 using official pip package 其中的CUDNN应该改为7.05for CUDA9.0 后面安装的spyde ...
- The First Day Of Cnblogs
The fear of the LORD is the beginning of wisdom,and knowledge of the Holy One is understanding. ——Pr ...
- linux shell 多个命令一起执行的几种方法
在命令行可以一次执行多个命令,有以下几种: 1.每个命令之间用;隔开 说明:各命令的执行结果,不会影响其它命令的执行.换句话说,各个命令都会执行, 但不保证每个命令都执行成功. cd /home/Py ...
- 【翻译】Flume 1.8.0 User Guide(用户指南) Sink
翻译自官网flume1.8用户指南,原文地址:Flume 1.8.0 User Guide 篇幅限制,分为以下5篇: [翻译]Flume 1.8.0 User Guide(用户指南) [翻译]Flum ...
- nodejs + 小程序云函数 生成小程序码
前言:这个东西坑死我了 业务需求要生成小程序码 然后我找了两天的资料 运行 生成一堆的乱码 死活就是不能生成 最后看了一遍博客 套用了一下 自己又简单的改了一下 nodejs 我是刚刚接触 有很多 ...
- (PMP)解题技巧和典型题目分析(模拟一)
- Blueking bk 蓝鲸开发环境搭建
首先根据文档安装各种东西 http://docs.bk.tencent.com/develop_center/ops/unified.html#installation 完后在在vagrantfile ...
- Paper | 学习多任务中的最佳分/ 合结构(十字绣结构)
目录 1. 问题 2. 十字绣结构(Cross-stitch architecture) 3. 实验设计 论文:Cross-stitch Networks for Multi-task Learnin ...