文档章节

Java线程

士别三日
 士别三日
发布于 06/10 12:29
字数 797
阅读 3
收藏 0

1.目录

  1. Java线程之核心概念
  2. Java线程之并行
  3. Java线程之并发
  4. Java线程之创建抽象和执行抽象
  5. Java线程之同步替代方案CAS
  6. Java线程之活跃性危险

2.简介

“核心概念”讲述了线程的三个基本概念:任务对象、线程管理对象、锁对象。然后又提到了线程的两大用处:并行和并发。然后通过图片的形式描述了线程同步的细节。最后概览了线程的状态。

“并行”讲述了在状态独立的情况下,使用并行可以大大提高程序的效率。重点讲了Fork/Join框架的原理和使用,Fork/Join框架适合用少量的线程执行符合分支/合并模型的计算密集型任务。后面还通过一个例子具体展示该怎么设计并行系统。还简要分析了计算密集型任务和IO密集型任务的区别。

“并发”讲述了线程同步,线程协作,并总结了怎样设计一个并发系统。然后分析了并发包里面的锁,并和synchronized进行对比。最后提到Java并发包里面的一些总要同步器。

“创建抽象和执行抽象”讲述了线程池的细节,以及Future模式的原理。可以让“并行”和“并发”系统实现起来更加简单,更加容易控制。

“同步替代方案CAS”讲述了CAS的原理,以及CAS在Java平台的应用,最后介绍了Java平台对应用开发者开放的CAS操作——原子变量类。让同步方案多了一种可能。

“活跃性危险”讲述了线程同步过程中,可能发生的活跃性故障。并分析如何去避免。最后提供了一种监控线程状态的方法,方便发现问题。

本系列文章并没有覆盖Java线程的所有内容,也没有太多的概念介绍和使用细节,适合有一定基础的读者看。本系列文章试图从理解原理的角度,推导出一些最佳实践。在设计并行系统或并发系统的时候,一定要注意和业务系统进行隔离,不要掺杂在业务系统里面,因为这样很容易出错。应该将并行系统或并发系统封装成一个库或框架,供业务系统使用。比如Spring实际上就包含了并行系统(让每个用户请求同时进行,互不干扰),Tomcat实际上包含了并发系统(接收请求线程和处理线程协作,最终将请求信息包装成Java对象送到对应Servlet),还有Java并发包里面的并发集合类……正是因为有这些并行系统和并发系统的支撑,业务代码才能显得简单而美好。可以这么说,使用线程一方面是为了最大限度利用系统性能,一方面是为了保持业务代码简单而美好。

请关注我的公众号:

© 著作权归作者所有

共有 人打赏支持
士别三日

士别三日

粉丝 38
博文 30
码字总数 43081
作品 0
深圳
程序员
14、Java并发性和多线程-Java ThreadLocal

以下内容转自http://ifeve.com/java-theadlocal/: Java中的ThreadLocal类可以让你创建的变量只被同一个线程进行读和写操作。因此,尽管有两个线程同时执行一段相同的代码,而且这段代码又有...

easonjim
2017/06/16
0
0
mysql千万级测试1亿数据的分页分析测试

上一篇文章我们测试一些order by查询和分页查询的一些基准性能,现在我们来分析一下条件索引查询的结果集的测试 现在我们继续进行一个测试相同的表结构插入1亿条数据这次用到的是Innodb表引擎...

idea_biu
2012/07/02
0
1
java类ThreadLocal的理解

ThreadLocal是什么 ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是thread local variable(线程局部变量)。也许把它命名为ThreadLocalVar更...

保罗的寓言
2011/05/21
0
1
Java的OutOfMemoryError和StackOverflowError

Java的OutOfMemoryError和StackOverflowError Java Virtual Machine定义了两种异常:OutOfMemoryError与StackOverflowError。 OutOfMemoryError:Java启动一个线程时,JVM没有足够的内存空间...

开开心心过
2017/10/16
0
0
ThreadLocal使用方法&实现原理

Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的ThreadLocal变量...

秋风醉了
2014/08/01
0
1

没有更多内容

加载失败,请刷新页面

加载更多

IDEA 鼠标跳到下一行

敲代码时有时会出现这样的情况,鼠标在图中的位置,还需要手动将鼠标移动到这行的末尾然后再回车才能到新的一行。 用【Shift + Enter】,可以【IDEA新建一行,并且光标移到新行】...

karma123
13分钟前
3
0
在Kubernetes集群中部署ownCloud云盘系统

ownCloud ownCloud is a file sharing server that puts the control and security of your own data back into your hands. 参考 建立自己的共享云盘 - 使用ownCloud 远程访问家里机器的文件......

openthings
15分钟前
1
0
Python编写的以太坊虚拟机的新实现Py-EVM

Py-EVM是用Python编写的以太坊虚拟机的新实现。目前github上695个star,正在积极开发中,但正在通过以太坊/测试提供的测试套件快速推进。我们感谢有Vitalik和现有的PyEthereum代码,使得我们...

geek12345
17分钟前
1
0
(2)集成element-ui

(2)集成element-ui 1 安装element-ui依赖 cnpm install --save element-ui 2 按需引入 借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的。 首先,安装 ...

neumeng
22分钟前
2
0
linux下tree命令的用法解释

tree命令,主要功能是创建文件列表,将所有文件以树的形式列出来 linux下的tree就比较强大了,但一般系统并不自带这个命令,需要手动下载安装。 安装 : 1 yum -y install tree -a 显示所有文...

嘘嘘者
35分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部