文档章节

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并发包里面的并发集合类……正是因为有这些并行系统和并发系统的支撑,业务代码才能显得简单而美好。可以这么说,使用线程一方面是为了最大限度利用系统性能,一方面是为了保持业务代码简单而美好。

请关注我的公众号:

© 著作权归作者所有

共有 人打赏支持
士别三日

士别三日

粉丝 35
博文 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
ThreadLocal使用方法&&实现原理

ThreadLocal使用方法&&实现原理 ThreadLocal使用 Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这...

秋风醉了
2014/08/01
0
1
深入JDK源码之ThreadLocal类

学习JDK中的类,首先看下JDK API对此类的描述,描述如下:该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每个线程...

陶邦仁
2015/03/26
0
6

没有更多内容

加载失败,请刷新页面

加载更多

下一页

HTTPS is easy

HTTPS is easy https://www.troyhunt.com/https-is-easy/ HTTPS is easy! In fact, it's so easy I decided to create 4 short videos around 5 minutes each to show people how to enable ......

openthings
27分钟前
0
0
bugList 2

用户端: 1. 上传文件时,当选择:彩色-A3-双面时,第二个图片有bug 应改为 和第一个图片的类型相同 2. 确认打印时,三个下拉选目前有bug 应改为:根据后台配置的商家,group by计算出不同城...

勇恒
30分钟前
2
0
keras cnn 网咯 mnist 分类

搭建貌似比tf是简单很多。。。。。 from keras.datasets import mnistfrom keras.utils import np_utilsfrom keras.models import Sequentialfrom keras.layers import Dense, Activat......

阿豪boy
33分钟前
0
0
解决 /var/run/nginx.pid failed

nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory) sudo nginx -c /etc/nginx/nginx.conf nginx -s reload...

驛路梨花醉美
34分钟前
0
0
nginx负载均衡-ssl原理-生成ssl密钥对-nginx配置ssl

nginx负载均衡: 1.创建配置文件 vim /usr/local/nginx/conf/vhost/load.conf #添加以下内容: upstream qq_com #名字自定义,借助此模块定义多个IP,后面...

ZHENG-JY
35分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部