E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
并发编程系列
Java
并发编程系列
之十七:Condition接口
通过前面的文章,我们知道任何一个Java对象,都拥有一组监视器方法,主要包括wait()、notify()、notifyAll()方法,这些方法与synchronized关键字配合使用可以实现等待/通知机制。而且前面我们已经使用这种方式实现了生产者-消费者模式。类似地,Condition接口也提供类似的Object的监视器的方法,主要包括await()、signal()、signalAll()方法
u011116672
·
2016-04-05 14:00
并发编程
Java
并发编程系列
之十六:Lock锁
Lock锁简介Lock锁机制是JDK5之后新增的锁机制,不同于内置锁,Lock锁必须显式声明,并在合适的位置释放锁。Lock是一个接口,其由三个具体的实现:ReentrantLock、ReetrantReadWriteLock.ReadLock和ReetrantReadWriteLock.WriteLock,即重入锁、读锁和写锁。增加Lock机制主要是因为内置锁存在一些功能上局限性。比如无法中断一
u011116672
·
2016-04-05 13:00
并发编程
Java
并发编程系列
之十五:Executor框架
Java使用线程完成异步任务是很普遍的事,而线程的创建与销毁需要一定的开销,如果每个任务都需要创建一个线程将会消耗大量的计算资源,JDK5之后把工作单元和执行机制区分开了,工作单元包括Runnable和Callable,而执行机制则由Executor框架提供。Executor框架为线程的启动、执行和关闭提供了便利,底层使用线程池实现。使用Executor框架管理线程的好处在于简化管理、提高效率,还
u011116672
·
2016-04-04 17:00
并发编程
Java
并发编程系列
之十四:阻塞队列
阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加操作支持阻塞地插入和移除方法。支持阻塞插入的方法是指当队列满时会阻塞插入元素的线程,直到队列不满;支持阻塞移除的方法是指当队列为空时获取元素的线程无法继续获取元素直到队列不空。可以发现阻塞队列非常适合消费者和生产者场景下进行使用,生产者生产数据就是向阻塞队列中插入元素,消费者消费数据就是从阻塞队列中移除元素。Java提供
u011116672
·
2016-04-04 15:00
并发编程
Java
并发编程系列
之十三:生产者-消费者模式
生产者-消费者模式指的是:生产者和消费者在同一个时间段共用同一段空间,在这段时间内,生产者负责往存储空间生产数据,而消费者则负责消费数据。实际上存在很多类似的场景:消息中间件就可以看做这种模式的应用,客户端请求负责把请求消息发送给消息中间件,然后由服务器负责从消息中间件获取请求并进行响应;还有网络编程中Socket也可以看做是生产者消费者模式的应用,etc。为了简化问题的研究,现在仅仅考虑一种简单
u011116672
·
2016-04-04 13:00
并发编程
Java
并发编程系列
之十二:死锁、饥饿和活锁
死锁发生在一个线程需要获取多个资源的时候,这时由于两个线程互相等待对方的资源而被阻塞,死锁是最常见的活跃性问题。这里先分析死锁的情形:假设当前情况是线程A已经获取资源R1,线程B已经获取资源R2,之后线程A尝试获取资源R2,这个时候因为资源R2已经被线程B获得了,所以线程A只能阻塞直到线程B释放资源R2。另一方面,线程B在已经获得资源R2的前提下尝试获取由线程A持有的资源R1,那么由于资源R1已经
u011116672
·
2016-04-03 18:00
并发编程
Java
并发编程系列
之十一:synchronized(2)
上一篇文章中提到了synchronized关键字在实现同步方面的作用与原理,其实,除了互斥机制,synchronized还能实现内存可见性——当一个线程修改了对象的状态,其他线程可以看到状态的变化。关于synchronized的内存可见性做如下说明:线程B在执行由锁保护的同步代码块时,可以看到线程A对同一个锁保护的同步代码块的操作结果。举个例子,A获取对象M的对象级别锁,并进入代码块,随后释放对象
u011116672
·
2016-04-03 17:00
并发编程
Java
并发编程系列
之十:synchronized(1)
在多线程并发访问资源(这类资源称为临街资源)的时候,由于割裂来了原子操作,所以会导致数据不一致的情况。为了避免这种情况,需要使用同步机制,同步机制能够保证多线程并发访问数据的时候不会出现数据不一致的情况。一种同步机制是使用synchronized关键字,这种机制也称为互斥锁机制,这就意味着同一时刻只能有一个线程能够获取到锁,获得的锁也被称为互斥锁。其他需要获取该互斥锁的线程只能被阻塞,直到获取到该
u011116672
·
2016-04-03 16:00
并发编程
Java
并发编程系列
之九:AQS
AQS是队列同步器的简称,简单来说这个东西是JUC框架工具包和构建锁的基础,它使用一个int成员变量表示同步状态,通过内置的FIFO队列完成资源获取线程的排队工作。深刻理解AQS对后面常用的并发工具也掌握得更深刻。首先说说AQS和锁的区别吧:锁的底层是使用AQS实现的。锁是面向使用者的,锁定义了使用者与锁交互的接口,隐藏了具体的实现细节;AQS是面向锁的实现者的,它屏蔽了一些复杂的同步状态的管理,
u011116672
·
2016-04-03 15:00
并发编程
Java
并发编程系列
之八:wait()、notify()和notifyAll()
一个线程修改一个对象的值,而另一个线程则感知到了变化,然后进行相应的操作,这就是wait()、notify()和notifyAll()方法的本质。具体体现到方法上则是这样的:一个线程A调用了对象obj的wait方法进入到等待状态,而另一个线程调用了对象obj的notify()或者notifyAll()方法,线程A收到通知后从对象obj的wait方法返回,继续执行后面的操作。可以看到以上两个线程通过
u011116672
·
2016-04-02 18:00
并发编程
Java
并发编程系列
之七:正确终止与恢复线程
前面提到了stop()、suspend()等方法在终止与恢复线程的弊端,那么问题来了,应该如何正确终止与恢复线程呢?这里可以使用两种方法:interrupt()方法和使用boolean变量进行控制。在使用interrupt方法之前,有必要介绍一下中断以及与interrupt相关的方法。中断可以理解为线程的一个标志位属性,表示一个运行中的线程是否被其他线程进行了中断操作。这里提到了其他线程,所以可以
u011116672
·
2016-04-02 17:00
Java
并发编程系列
之六:stop()、resume()和suspend()
这三个方法已经是jdk是过期的方法,为什么仍然要单独拿出来说呢?主要目的是理解jdk多线程API设计的初衷,理解并且更好使用线程API。那么就来说说这三个方法吧:stop方法用于终止一个线程的执行,resume方法用于恢复线程的执行,suspend方法用于暂停线程的执行。要注意的resume方法需要和suspend方法配对使用,因为被暂停的线程需要执行恢复方法才能继续执行。虽然这三个方法不在推荐使
u011116672
·
2016-04-02 16:00
并发编程
java并发精品博客收集
java并发精品博客收集 (将不断更新欢迎收藏)
并发编程系列
之一:锁的意义C/C++Volatile关键词深度剖析致敬disruptor:CAS实现高效(伪)无锁阻塞队列实践JVM锁实现探究1:synchronized
smallbug_vip
·
2016-03-07 15:04
java
jvm
并发
Java
并发编程系列
(一):Java并发内存模型
一、进程间通信方式线程是借鉴了进程的工作方式,所以我们有必要先看一下进程间通信的方式。1、管道:这个大家应该比较熟悉,这里主要是父子进程的通信。2、有名管道:主要是给无亲缘关系的进程传递数据使用,Linux命令中也可以常常使用管道来进行数据的传递。3、信号量:信号量由迪杰斯特拉提出,用一个整型变量来累积唤醒次数来控制多个进程对资源的访问。4、消息队列:通过存放进程产生的消息来进行通信,相对于管道来
闻_安
·
2016-03-05 23:07
Java
Java并发编程
java
并发编程系列
参考地址: http://www.cnblogs.com/dolphin0520/category/602384.html
zf0512305
·
2016-02-22 10:00
Java
并发编程系列
之二:线程状态
线程的状态一共有6种,在任意时刻线程的状态只能是其中的一种。正确理解线程的状态有助于我们更容易理解线程。具体的线程状态如下:状态名称说明NEW初始状态,线程被构建,但是还没有调用start方法RUNNING运行状态BLOCKED阻塞状态,表示线程阻塞于锁WAITING等待状态,表示线程线程进入等待状态,进入该状态后需要其他线程做出通知动作TIME_WAITING超时等状态状态,该状态与WAITIN
u011116672
·
2015-12-04 22:00
并发编程
Java
并发编程系列
之五:happens-before原则
前言happens-before是JMM的核心,之所以设计happens-before,主要出于以下两个方面的因素考虑的:1)程序员的角度,JMM内存模型需要易于理解、易于编程;2)编译器和处理器的角度,编译器和处理器希望内存模型对其束缚越少越好,这样就可以根据自己的处理规则进行优化。但是这两个方面其实是相互矛盾的,因为JMM易于编程和理解就意味着对编译器和处理器的束缚就越多。happens-be
u011116672
·
2015-12-02 14:00
并发编程
JMM
Java
并发编程系列
之四:锁与volatile的内存语义
前言在前面的文章中已经提到过volatile关键字的底层实现原理:处理器的LOCK指令会使得其他处理器将缓存刷新到内存中(确切说是主存)以及会把其他处理器的缓存设置为无效。这里的内存语义则说的是在JMM中的实现,那么为什么要理解volatile和锁在JMM中的内存语义呢?主要原因是这部分内容是与程序开发息息相关的,所以在高并发量的系统中,如果对这块知识的了解欠缺的话将无法设计出优雅支持高并发的系统
u011116672
·
2015-12-02 13:00
并发编程
JMM
Java
并发编程系列
之三:重排序与顺序一致性
前言在我们编写程序并运行的时候,编译器给我们一个错觉:程序编译的顺序与编写的顺序是一致的。但是实际上,为了提高性能,编译器和处理器常常会对指令进行重排序。重排序主要分为两类:编译器优化的重排序、指令级别并行的重排序和内存系统的重排序。所以我们编写好Java源代码之后,会经过以上三个重排序,到最终的指令序列。我们这里提到的Java内存模型又是什么呢?Java内存模型(后面简称JMM)是语言级别的内存
u011116672
·
2015-12-01 15:00
并发编程
JMM
Java
并发编程系列
之一:并发机制的底层原理
前言并发编程的目的是让程序运行更快,但是使用并发并不定会使得程序运行更快,只有当程序的并发数量达到一定的量级的时候才能体现并发编程的优势。所以谈并发编程在高并发量的时候才有意义。虽然目前还没有开发过高并发量的程序,但是学习并发是为了更好理解一些分布式架构。那么当程序的并发量不高,比如是单线程的程序,单线程的执行效率反而比多线程更高。这又是为什么呢?熟悉操作系统的应该知道,CPU是通过给每个线程分配
u011116672
·
2015-11-29 19:00
并发编程
【Java并发编程】并发编程大合集
为了方便各位网友学习以及方便自己复习之用,将Java
并发编程系列
内容系列内容按照由浅入深的学习顺序总结如下,点击相应的标题即可跳转到对应的文章 【Java并发编程】实现多线程的两种方法 【Java
youzhouliu
·
2015-11-17 10:00
java
多线程
并发
线程
总结
漫谈并发编程(一) - 并发简单介绍
此文作为为漫谈
并发编程系列
的第一篇,探本溯源,以一篇对并发的文字
·
2015-11-13 17:17
并发编程
并发编程 — 并发数据结构
并发编程系列
文章: 初解线程池:http://ray-yui.iteye.com/blog/2072463
·
2015-11-05 08:49
数据结构
并发编程 — 并发数据结构--转载
并发编程系列
文章: 初解线程池:http://ray-yui.iteye.com/blog/2072463 详解线程池:http://ray-yui.iteye.com/blog/2075311
maikelsong
·
2015-11-04 17:00
并发编程 — 实现线程安全
并发编程系列
文章: 初解线程池: http://ray-yui.iteye.com/blog/2072463 &
ray_yui
·
2015-08-12 10:00
java
多线程
编程
并发编程---------初解线程池
并发编程系列
文章: 初解线程池:http://ray-yui.iteye.com/blog/2072463 详解线程池:http://ray-yui.iteye.com/blog/2075311
xiaowei2002
·
2015-08-07 06:00
并发编程
并发编程 — 判断线程安全
并发编程系列
文章: 初解线程池: http://ray-yui.iteye.com/blog/2072463 &
ray_yui
·
2015-08-05 15:00
java
多线程
编程
并发编程 — 判断线程安全
[size=medium]
并发编程系列
文章:初解线程池:[url]http://ray-yui.iteye.com/blog/2072463[/url]详解线程池:[url]http://ray-yui.iteye.com
Ray_Yui
·
2015-08-05 10:53
java
多线程
编程
Java
并发编程 — volatile
并发编程系列
文章: 初解线程池: http://ray-yui.iteye.com/blog/2072463 &
ray_yui
·
2015-07-30 10:00
java
多线程
编程
漫谈并发编程(一) - 并发简介
此文作为为漫谈
并发编程系列
的第一篇,探本溯源,以一篇对并发的文字描述开头。并发编程由来 早年的计算机中没有操作系统,在某个时间段内只支持运行一个程序,并
Troy__
·
2014-10-20 20:00
java
并发
[置顶] Java
并发编程系列
博文目录
【Java并发编程】线程的概念及简单实现;【Java并发编程】线程的状态、分类及优先级;
yegongheng
·
2014-08-23 20:00
java
编程
并发
线程
并发编程 — 并发数据结构
并发编程系列
文章: 初解线程池: http://ray-yui.iteye.com/blog/2072463 &
ray_yui
·
2014-06-24 09:00
java
多线程
编程
并发编程 — 并发数据类型
并发编程系列
文章: 初解线程池: http://ray-yui.iteye.com/blog/2072463 &
ray_yui
·
2014-06-16 10:00
java
多线程
编程
并发编程 — 详解线程池
并发编程—详解线程池博客分类:Javajava多线程编程 本文章需要对JDK5Executor框架有所了解,请读者先阅读初解线程池:http://ray-yui.iteye.com/blog/2072463
并发编程系列
文章
hewusheng10
·
2014-06-03 14:00
并发编程 — 详解线程池
本文章需要对JDK5 Executor框架有所了解,请读者先阅读 初解线程池: http://ray-yui.iteye.com/blog/2072463
并发编程系列
文章:  
ray_yui
·
2014-06-03 09:00
java
多线程
编程
并发编程 — 初解线程池
并发编程系列
文章: 初解线程池: http://ray-yui.iteye.com/blog/2072463 &
ray_yui
·
2014-05-28 09:00
java
多线程
编程
【Java并发编程】并发编程大合集
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17539599 为了方便各位网友学习以及方便自己复习之用,将Java
并发编程系列
内容系列内容按照由浅入深的学习顺序总结如下
mmc_maodun
·
2013-12-27 08:00
java
多线程
线程
并发
总结
【Java并发编程】并发编程大合集
转载请注明出处:http://blog.csdn.net/ns_code/article/details/17539599 为了方便各位网友学习以及方便自己复习之用,将Java
并发编程系列
内容系列内容按照由浅入深的学习顺序总结如下
兰亭风雨
·
2013-12-27 00:00
Java并发编程
Java并发编程系列
并发编程系列
-多线程IO vs 单线程IO
当有很多个文件需要进行处理的时候,我们为了提高程序执行的性能,往往想当然的开多个线程并行执行文件的读/写动作。但是其实这种“想当然”是错误的,下面我们就来看看,对于磁盘IO密集型的应用,多线程到底带来了什么?首先,我写了一段读文件的程序,这个程序支持用单线程/多线程两种方式读入多个文件,并且记录整个读文件的耗时,最后来比较一下单线程/多线程两种模型在读文件上的性能差别: publicclassT
blueswind8306
·
2013-12-03 01:00
java
多线程
并发编程系列
-并行子任务的超时控制
在并发编程中,经常会遇到提交多个子任务并行执行的场景。比如一个中心节点同时派发任务给多个子节点,然后中心节点等待所有子节点完成任务后继续主流程。在这个过程中,主节点需要设置一个最大等待超时,当达到超时时间后不再等待未返回的节点结果,做功能降级处理。 对于这种需求,如果子任务是阻塞执行的,则一般会使用一个线程池来执行子任务,但主任务如何唤醒超时呢?直接想到的方式是主任务在提交完所有子任务后进入
blueswind8306
·
2013-11-23 19:00
java
并发编程
concorrent包下 一些比较好的 博文
近来在项目过程中一直受并发问题所困,也是由于自己对并发的一些技术细节一知半解,因此最近一周潜心学习了并发编程的各个方面,知识来源主要是《操作系统》和《Java并发编程实践》,另外也结合一些分布式项目里面的一些经验,总结了一个
并发编程系列
navy0168
·
2012-08-28 21:00
比较
上一页
2
3
4
5
6
7
8
9
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他