在我们想要谈论Java并发包(java.util.concurrent)的时候,这是一个头疼的问题,却又是每个Java工程师不得不掌握的一项技能。一直以来都想写一个Java并发包系列,无奈迟迟没有动手动脑。最近重新思考规划了自己的学习路线,决定从Java并发包开始把每个技术、原理、源码做成一个一个系列,由浅入深,由表及里。

这是Java并发包的开篇,我将大致介绍从一个较为宏观的角度来窥探Java并发包,以及这个系列的一些大致思路。

java.util.concurrent从jdk1.5开始新加入的一个包,致力于解决并发编程的线程安全问题,使用户更够更为快捷方便的编写多线程情况下的并发程序。谈到线程安全问题总会免不了几个核心问题:锁、阻塞、原子性、可见性等等。

-java.util.concurrent-atomic-locks

在concurrent包下还有两个子包,一个是atomic这里面放置的是一些原子类,比如在多线程环境下执行i++的操作实际上是i+1再是将结果赋值给i,这里就会涉及到一个线程安全问题,当一个线程正在执行i+1的时候,很有可能另外一个线程正在读取i的值,这个时候就会造成数据不一致,这是原子性问题。即时一个线程完成了i++的操作,而另外一个线程此时来读取i的值也有可能发现i并不是想加后的值,这是可见性问题。atomic里的AtomInteger就能完美解决原子性和可见性问题。

另一个包是locks,这里面的包可以说是提供了并发包里线程安全的最为基础的工具——显示锁(ReentrantLock、ReadWriteLock)。Java中有synchronized修饰的同步代码块内置锁,但这远远不能满足一些高级特性,例如通过轮询、定时的方式去获得一个锁,并发包中的显示锁的灵活性要高于synchronized,但随之而来的是使用的难度会增加,使用不当则会造成未知的后果。

concurrent包下就是一些并发工具类,常见的有ConcurrentHashMap、ArrayLinkedQueue、LinkedLinkedQueue……这些都是线程安全的类,根据情况不同选取不同的类。

在这个系列的是开始我会首先介绍有关线程的一些基础知识以及专业术语,例如:线程与进程、阻塞与非阻塞、线程安全、原子性、可见性等等,有时候可能会“超纲”,超纲部分做简要阐述。接着会从实例出发分门别类的介绍并发包以及源码,源码以jdk1.7为主,有时可能会设计最新的jdk1.8甚至是jdk1.6,这会特殊标明。最后会对Java并发包做一个总结性的概述。

以上就是Java并发包系列的开篇。如有错误,请留下评论批评指正。

java并发包是谁编写的_0.Java并发包系列开篇相关推荐

  1. Java FX8_第一篇_编写第一个Java FX Application

    所有的Java FX程序必须继承自Application类且必须覆写start( )方法,而start ( )方法的参数是一个stage(继承Application类且使用Stage类必须导入java ...

  2. java用二维数组编写地图_[Java] Java二维数组写一个超级简单的扫雷游戏,适合新手...

    直接上代码//随机生成地雷数 int numOfMines=10; //地图尺寸 int mapSize=9; Random r=new Random(); //用二位数组做地图 int [][] m ...

  3. java个人小管家代码_Java程序设计基础—Java小管家系统构建

    课题一 Java桌面小管家项目分析 任务1 Java桌面小管家项目分析 课题二 了解Java语言 任务2 编写第一个Java程序 课题三 面向对象程序设计思想 任务3 为小管家设计类 任务4 实现小管 ...

  4. Java串口并口程序编写

    Java在传统上感觉和硬件打交道的比较少,这部分工作用C语言的比较多. 但并不是说Java不具备这样的能力. Sun就发布了Java和串口以及并口的开发包.但是在正常的搜索中只能找到Linux和Sol ...

  5. 《Java 开发从入门到精通》—— 2.2 编写第一段Java程序

    本节书摘来异步社区<Java 开发从入门到精通>一书中的第2章,第2.2节,作者: 扶松柏 , 陈小玉,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.2 编 ...

  6. 安装jdk配置环境、cmd命令行测试环境变量配置是否正确及运行java程序、安装IDEA编写代码测试

    文章目录 1.安装jdk配置环境 2.cmd命令行测试环境变量配置是否正确及运行java程序 3.安装IDEA编写代码测试 1.安装jdk配置环境 首先打开官网Oracle https://www.o ...

  7. java代码解锁华为_如何编写可怕的Java代码?

    我决定告诉你如何编写可怕的Java代码.如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读. 如果你正在寻找有关如何编写良好代码的建议,请查看其它文章! 对一切使用异常 你 ...

  8. 表示我想你的代码java_如何编写可怕的Java代码?

    我决定告诉你如何编写可怕的Java代码.如果你厌倦了所有这些美丽的设计模式和最佳实践,并且想写些疯狂的东西,请继续阅读. 如果你正在寻找有关如何编写良好代码的建议,请查看其它文章! 对一切使用异常 你 ...

  9. lr java脚本_【上海校区】 LR Java脚本编写方法

    之前在某一家银行也接触过java写的性能接口脚本,最近因项目,也需编写java接口性能测试脚本,脑袋一下懵逼了,有点不知道从何入手.随后上网查了相关资料,自己又稍微总结了一下,与大家共同分享哈~ 首先 ...

  10. 控制台编写JAVA程序教程_写一个java程序的步骤是什么?写java程序技巧

    写Java程序是要按照步骤来的,这样才能写好一个java程序,那么接下来,我们就来给大家讲解一下写一个java程序的步骤是什么? (1)创建Java项目:"FileàNewàProjectà ...

最新文章

  1. Hibernate干系映照小结
  2. C ++ 11引入了标准化的内存模型。这是什么意思?它将如何影响C ++编程?
  3. oracle千万级分页优化,oracle千万级数据分页存储过程优化
  4. 10.1-控制单元CU的组合逻辑设计
  5. java面向对象(第一章课后作业)02
  6. n维空间的欧氏距离公式_什么是“欧几里得距离”(ED)?| 群体遗传专题
  7. 按网络管理模式 计算机网络可分为,计算机网络应用 按网络管理模式分类
  8. 计算机接口cad图,(有全套CAD图纸)USB接口插件弯曲模具设计.rar
  9. 易班php,易班PHP-SDK开发
  10. 教您如何查看Win7详细系统版本号
  11. 提高你的Java代码质量吧:不要随便设置随机种子
  12. MYSQL 源码安装 root 用户
  13. 用HTML5和JavaScript做一个轮播图
  14. php 文件头部(header)信息详解
  15. 《Matrix capsules with EM Routing》新胶囊网络
  16. 系统优化之大循环在内,小循环主外为什么会效率高
  17. Java 代码开发规范
  18. STM32蓝牙通信控制LED(HC-08)
  19. 我作的一个单元测试框架程序,请大家多多指教.
  20. stax2 jar 包冲突

热门文章

  1. 最小覆盖模型matlab_用MATLAB实现最小圆覆盖问题!
  2. 理解python 文件首行(Shebang)
  3. FreeRTOS 配置文件
  4. NavicatPremium-Mac-无法打开问题
  5. 使用Native API查询Windows硬盘分区系统设备名称
  6. hightec教程_如何用VectorCAST/C++做单元集成测试?
  7. C++ string字符串修改和替换方法
  8. CSDN新版下载频道介绍之二——上传和下载资源页面介绍
  9. 华为认证考试在哪里考比较靠谱?
  10. 安卓java游戏模拟器_java游戏模拟器安卓版下载