并发书籍 ’ 目录归档

《Java并发编程从入门到精通》显示锁Lock和ReentrantLock

javaC作者:张振华    购买链接:天猫商城  JD商城  当当书店

 

显示锁Lock和ReentrantLock

Lock是一个接口提供了无条件的、可轮询的、定时的、可中断的锁获取操作,所有加锁和解锁的方法都是显式的。包路径是:java.util.concurrent.locks.Lock。核心方法是lock(),unlock(),tryLock(),实现类有ReentrantLock, ReentrantReadWriteLock.ReadLock, ReentrantReadWriteLock.WriteLock。

阅读全文

《 Java并发编程从入门到精通》Thread安全与不安全

javaC作者:张振华    购买链接:天猫商城  JD商城  当当书店

鸟欲高飞先振翅,人求上进先读书。本文是原书的第3章  Thread安全3.2 什么是不线程安全。3.3什么是线程不安全。

3.2 什么是不安全?

当多个线程同时操作一个数据结构的时候产生了相互修改和串行的情况,没有保证数据的一致性,我们通常称之这种设计的代码为”线程不安全的“。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《 Java并发编程从入门到精通》Thread安全与不安全

《 Java并发编程从入门到精通》 常见的内存溢出的三种情况

javaC
作者:张振华    购买链接:天猫商城  JD商城  当当书店

鸟欲高飞先振翅,人求上进先读书。本文是原书的第9章 线程的监控及其日常工作中如何分析里的9.3.3节常见的内存溢出的三种情况。
阅读全文

《 Java并发编程从入门到精通》 Java线程池的监控

javaC作者:张振华    购买链接:天猫商城  JD商城  当当书店

本文是《 Java并发编程从入门到精通》第9章 线程的监控及其日常工作中如何分析的9.1节 Java线程池的监控。

 

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《 Java并发编程从入门到精通》 Java线程池的监控

《 Java并发编程从入门到精通》第5章 多线程之间交互:线程阀

javaC

作者:张振华    购买链接:天猫商城

(投入多少,收获多少。参与多深,领悟多深,京东,亚马逊,当当均有销售。)

 


5.1 线程安全的阻塞队列BlockingQueue

(1)先理解一下Queue、Deque、BlockingQueue的概念:

Queue(队列) :用于保存一组元素,不过在存取元素的时候必须遵循先进先出原则。队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将是最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。

阅读全文

《 Java并发编程从入门到精通》目录和序言

目 录

第一部分:线程并发基础

 


第1章 概念部分   1
1.1 CPU核心数、线程数 (主流cpu,线程数的大体情况说一下) 1
1.2 CPU时间片轮转机制 2
1.3 什么是进程和什么是线程 4
1.4 进程和线程的比较 5
1.5 什么是并行运行 7
1.6 什么是多并发运行 8
1.7 什么是吞吐量 9
1.8  多并发编程的意义及其好处和注意事项 10
1.9  分布式与并发运算关系 11
1.10 Linux和Window多并发可以采取不的一样机制(apache和tomcat??) 6
第2章 认识Java里面的Thread       12
2.1 线程的实现三种方法 (先感受一下创建几个多线程方法实例演练)12
2.2 Thread里面的属性和方法 (通过工具看看能不能监控到thread里面的一些属性值)16
2.3 线程的生命周期 19
2.4 什么是守护线程 31
2.5 线程组 33
2.6 当前线程副本ThreadLocal(用意和实际应用场景) 35
2.7 线程异常的处理(单个和组)38
第3章 Thread安全     39
3.0 线程的内存模型
3.1 什么是不安全(写个代码例子多并发带来的一些问题,变量互串,相互影响) 39
3.2 什么是安全(写个代码例子,安全的三种(多实例,加锁,线程安全的集合类)情况,引出锁)         43
3.3 第一种锁:隐式锁,又称线程同步synchronized(举几个例子实际演示一下,及其写法注意,带来的额外开销) 45
3.4 第二种锁:显示锁,Lock;及其与synchronized的区别(ReentrantReadWriteLock) 49
3.5 什么是死锁 53
3.6 看如下代码的锁有用吗 55
3.7 关键字:volatile       57
3.8 原子操作:atomic(atomic包FutureTask, AtomicLong等)   59
3.9 线程同步和锁的原理(有待弄清楚锁的运行机制和原理) 61
3.10 单利模式的写法 63
第4章 线程安全的集合类     64
4.1 java.util.concurrent. ConcurrentMap 64
4.2 java.util.concurrent.ConcurrentHashMap 66
4.3 java.util.concurrent. CopyOnWriteArrayList 68
4.4 java.util.concurrent. CopyOnWriteArraySet 70
4.5 非concurrent下面的线程安全集合类(Hashtable 和 Vector 和StringBuffer) 72
4.6 集合类安全的实现原理剖析 75

第二部分:线程并发晋级之高级部分 75


第5章 多线程之间交互:线程阀
5.1 线程安全的阻塞队列BlockingQueue (详解一翻java.util.concurrent.ConcurrentLinkedDeque 和java.util.concurrent. ConcurrentLinkedQueue) 76
5.2 同步计数器CountDownLatch   81
5.3 循环障碍CyclicBarrier   84
5.4 信号装置Semaphore 87
5.5 任务机制FutureTask 90
第6章 线程池 115
6.1 什么是线程池 90
6.2 newFixedThreadPool的使用   92
6.3 newCachedThreadPool 的使用 94
6.4 newSingleThreadExecutor的使用(插图,原理) 96
6.5 线程池的好处(未使用的时候的情况,使用后的情况) 98
6.4 认识ExecutorService(ThreadFactory先创建一个线程及其参数的详细讲解,如何自定义线程池) 100
6.5 线程池的原理 106
6.6 线程池在工作中的错误使用 112
第7章 JDK7新增的Fork/Join 115
7.1 什么是Fork/Join 架构 115
7.2 创建实际使用Fork/Join 线程池118
7.3 合并任务的结果 123
7.4 工作原理 126
7.5 异步运行任务 130
7.6 在任务中抛出异常 135
7.7 结束任务 140
7.8 实际应用场景 143

第三部分:实际的使用与监控与拓展


 

第8章 线程,线程池在实际互联网项目开发中的应用
8.1 Servlet线程的设计
8.2 线程池如何合理设计与设置
8.3 Tomcat中线程池如何合理设置
8.4 Nginx线程池
8.5 数据库连接池
8.6 工作中如何实现在分布式系统中实现高并发
第9章 线程的监控及其日常工作中如何分析
9.1 Java线程池的监控
9.2 ForkJoin的监控
9.3 Java内存模型
9.4 可视化监控工具的使用
9.5 Linux线程分析监控使用方法
9.6 Linux分析监控的运行脚本
9.7 Eclipse里面如何调试并发程序
9.8 如何通过压力测试,测试服务器的抗压能力
9.9 MultithreadedTC测试并发简单介绍
第10章 线程在Android开发中的体现
10.1Android进程的基本知识
10.2Android进程的生命周期
10.3Android中Activity的生命周期
10.4Android线程的运行机制
10.5Android异步线程的处理方法
10.6Android异步线程的原理与实现

附录一:JVM的参数
附录二:Jstat的语法
附录三:Jstat中的一些术语的中文解释
附录四:Tomcat里面的server.xml中Executor的参数
附录五:Thread的API
结束语

 序言


阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《 Java并发编程从入门到精通》目录和序言

《七周七并发模型》第五章Actor引言

作者:Paul Butcher   译者:黄炎  出品方:图灵  出版社:人民邮电出版社 (感谢图灵授权并发编程网发布此文)

使用actor就像租车——我们如果需要,可以快速便捷地租到一辆;如果车辆发生故障,也不需要自己修理,直接打电话给租车公司更换另外一辆即可。

actor模型是一种适用性非常好的通用并发编程模型。它可以应用于共享内存架构和分布式内存架构,适合解决地理分布型的问题。同时它还能提供很好的容错性。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《七周七并发模型》第五章Actor引言

《七周七并发模型》第一章概述


购买本书   作者:Paul Butcher   译者:黄炎  出品方:图灵  出版社:人民邮电出版社 (感谢图灵授权本站发布此文)

并发编程虽不是新的概念,最近却逐渐热门起来。一些编程语言,如Erlang、Haskell、Go、Scala、Clojure,也因对并发编程提供了良好的支持,而受到广泛关注。

并发编程复兴的主要驱动力来自于所谓的“多核危机”。正如摩尔定律所预言的那样,芯片性能仍在不断提高,但相比加快CPU的速度,计算机正在向多核化方向发展。正如Herb Sutter所说,“免费午餐的时代已然终结”。为了让代码运行得更快,单纯依靠更快的硬件已无法满足要求,我们需要利用多核,也就是发掘并行执行的潜力。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《七周七并发模型》第一章概述

Java 7: 全面教程-第一章节: Java初体验

第一章节
Java初体验

 
开发一个Java程序关系到写代码,编译成字节码(bytecode), 和运行字节码。作为一个Java项目开发者将要一直重复做这些事情,所以做这个的时候你要感到舒适是很重要的。而此章节主要目标是让你趁此机会体验Java软件的开发过程。

写代码的关键不仅仅是要让它运做,还要让它方便阅读和维护,此章节介绍了Java 代码的规格。还有,自从聪明的开发者们使用了集成开发环境(Integrated Development Environment,简称IDEs) 使开发变得更简单了,所以此章节的最后一个小节给予了一些Java IDEs的使用建议。

1.1 第一个Java程序
1.2 Java代码规格
1.3 集成开发环境(IDEs)

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java 7: 全面教程-第一章节: Java初体验

Java 7: 全面教程-1.3 集成开发环境(IDEs)

1.3集成开发环境(IDEs)
你完全可以用文本编辑器来写Java 程序。但是,IDE会更方便。它不仅仅可以检查你的代码语法,还可以自动填写代码,检测,和调试你的程序。另外,在你输入的时候就自动编译了,还有运行Java程序只要点击个按钮就行。这样,可以节省你很多时间。
阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java 7: 全面教程-1.3 集成开发环境(IDEs)

Java 7: 全面教程-1.1 第一个Java程序

1.1第一个Java程序
这个小节主要介绍的是关于Java 开发的主要步骤:写代码,转换成字节码,和运行字节码。
阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java 7: 全面教程-1.1 第一个Java程序

Java 7: 全面教程-目录

Java 7- A Comprehensive Tutorial

Java 7- A Comprehensive Tutorial

Java 7: 全面教程 第一版

原文链接
作者:Budi Kurniawan
译者:郑玉婷

目录

介绍

第一章节:Java 初体验
第二章节:语言基础
第三章节:语句
第四章节:对象和类
第五章节:核心类
第六章节:继承
第七章节:出错处理
第八章节:数字和数据
第九章节:接口和抽象类 阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java 7: 全面教程-目录

超越Hadoop的大数据分析之图形处理尺寸

本文翻译自《BIG DATA ANALYTICS BEYOND HADOOP》译者:许巧辉

另一个来自Google的重要工具,看起来超越了Hadoop MR——Pregel框架实现了图形计算(Malewicez et al.2010)。在Pregel中的计算是由一系列迭代组成的,被称为supersteps。图上的每个顶点都与一个用户定义的计算函数相关联;Pregel确保每个superstep在图的每条边上并发调用用户定义的计算函数。顶点可通过边发送消息,并且顶点间可交换值。这也是个全局同步——所有操作必须在用户定义的函数结束后才能继续。熟悉BSP的读者可以看出为什么Pregel是BSP优秀的例子——一组实体在用户定义的函数中使用全局锁并行计算,并且能够进行消息交换。
阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 超越Hadoop的大数据分析之图形处理尺寸

超越Hadoop的大数据分析之致谢

本文翻译自《BIG DATA ANALYTICS BEYOND HADOOP》译者:许巧辉

首先,我要衷心感谢Vineet Tyagi、AVP和Impetus的创新实验室主管。Vineet对我帮助很大,并促使我写这本书。在6、7月份,每个工作日他给我3个小时的时间写作本书,这是帮助我完成本书的关键。任何学术活动都要专门花费很多时间——这时候就得加倍努力,因为我必须在工作之余写作。Vineet令写作成为我工作的一部分。

我也想对Pankaj Mittal、CTO和SVP、Impetus表示感谢,他对研发的全心支持,像我这样的研发全职工作。荣誉对他来说,就是Impetus能够有一个无支付和收入压力的研发团队。这真的释放了我并有助于我专注于研发。在IT行业工作,写书是一个艰巨的任务。感谢Pankaj实现这点及类似的活动。
阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 超越Hadoop的大数据分析之致谢

《Netty 权威指南》—— 选择Netty的理由

声明:本文是《Netty 权威指南》的样章,感谢博文视点授权并发编程网站发布样章,禁止以任何形式转载此文。

在开始本节之前,我先讲一个亲身经历的故事:曾经有两个项目组同时用到了NIO编程技术,一个项目组选择自己开发NIO服务端,直接使用JDK原生的API,结果2个多月过去了,他们的NIO服务端始终无法稳定,问题频出。由于NIO通信是它们的核心组件之一,因此,项目的进度受到了严重的影响,领导对此非常恼火。另一个项目组直接使用Netty作为NIO服务端,业务的定制开发工作量非常小,测试表明,功能和性能都完全达标,项目组几乎没有在NIO服务端上花费额外的时间和精力,项目进展也非常顺利。

这两个项目组的不同遭遇提醒我们:开发出高质量的NIO程序并不是一件简单的事情,除去NIO固有的复杂性和BUG不谈,作为一个NIO服务端需要能够处理网络的闪断、客户端的重复接入、客户端的安全认证、消息的编解码、半包读写等等,如果你没有足够的NIO编程经验积累,一个NIO框架的稳定往往需要半年甚至更长的时间。更为糟糕的是一旦在生产环境中发生问题,往往会导致跨节点的服务调用中断,严重的可能会导致整个集群环境都不可用,需要重启服务器,这种非正常停机会带来巨大的损失。

从可维护性角度看,由于NIO采用了异步非阻塞编程模型,而且是一个IO线程处理多条链路,它的调试和跟踪非常麻烦,特别是生产环境中的问题,我们无法有效调试和跟踪,往往只能靠一些日志来辅助分析,定位难度很大。

阅读全文

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: 《Netty 权威指南》—— 选择Netty的理由

return top