文档章节

Java线程

士别三日
 士别三日
发布于 06/10 12:29
字数 797
阅读 4
收藏 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并发包里面的并发集合类……正是因为有这些并行系统和并发系统的支撑,业务代码才能显得简单而美好。可以这么说,使用线程一方面是为了最大限度利用系统性能,一方面是为了保持业务代码简单而美好。

请关注我的公众号:

© 著作权归作者所有

共有 人打赏支持
上一篇: Java可扩展IO
士别三日

士别三日

粉丝 38
博文 30
码字总数 43081
作品 0
深圳
程序员
私信 提问
Thread(threadlocal)

1、简介 JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序,ThreadLocal并不是一...

开源中国首席碉堡了
11/28
0
0
ThreadLocal的设计理念与作用

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

whoisliang
02/14
0
0
Java中ThreadLocal的设计与使用

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

DragonRace
2013/11/25
0
0
Java多线程下 ThreadLocal 的应用实例

ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程” 。其实,ThreadLocal并不是一个 Thread,而是 Thread 的局部变量,也许把它命名为 ThreadLocalVariable更容易让人理解一些。...

空云万里晴
2014/01/06
0
0
ThreadLocal 基础知识

ThreadLocal是什么 · 早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 ...

向阳而生
2015/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

我是如何将博客转成PDF的

前言 只有光头才能变强 之前有读者问过我:“3y你的博客有没有电子版的呀?我想要份电子版的”。我说:“没有啊,我没有弄过电子版的,我这边有个文章导航页面,你可以去文章导航去找来看呀”...

Java3y
12分钟前
0
0
nginx的一些总结

Linux下安装Nginx完整教程及常见错误解决方案 1.Nginx安装环境 Nginx是C语言开发,建议在linux上运行,本教程使用Centos7.0作为安装环境. 1)gcc 安装nginx需要先将官网下载的源码进行编译,编译...

Yao--靠自己
19分钟前
0
0
Predicate函数式接口

Predicate接口主要用于流的筛选,比如在filter方法中传入Predicate判断。 作为函数式接口,这里居然有三个default方法,一个static方法,子孙满堂! 正统的接口方法,就是boolean test(T t)...

woshixin
20分钟前
0
0
sql 开窗函数

开窗函数:在开窗函数出现之前存在着很多用 SQL 语句很难解决的问题,很多都要通过复杂的相关子查询或者存储过程来完成。为了解决这些问题,在 2003 年 ISO SQL 标准加入了开窗函数,开窗函数...

hblt-j
31分钟前
1
0
使用Vue动态生成form表单的实例代码

具有数据收集、校验和提交功能的表单生成器,包含复选框、单选框、输入框、下拉选择框等元素以及,省市区三级联动,时间选择,日期选择,颜色选择,文件/图片上传功能,支持事件扩展。 欢迎大家s...

嫣然丫丫丫
38分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部