
多线程
JJiaoAo
这个作者很懒,什么都没留下…
展开
-
Java多线程基础总结一: synchronized
[size=medium] 最近写关于并发的小应用,才发现真的该好好的正视java的多线程了。之前没有深入的掌握,用起来也是那么的吃力。作为J2SE里面为 数不多的重要难点之一,多线程应用一直是我以敬畏的心态去尽量避开的,只是通过一些实例掌握一些简单的应用。这段时间会多用点时间 去掌握,有需要写下来的我也会通过这种方式既分享又加深理解。 首先这篇只涉及基础的知识整理,对于并发包...原创 2012-10-21 14:21:12 · 169 阅读 · 0 评论 -
Java多线程发展简史(3)
[size=medium]JDK 1.4在2002年4月发布的JDK1.4中,正式引入了NIO。JDK在原有标准IO的基础上,提供了一组多路复用IO的解决方案。通过在一个Selector上挂接多个Channel,通过统一的轮询线程检测,每当有数据到达,触发监听事件,将事件分发出去,而不是让每一个channel长期消耗阻塞一个线程等待数据流到达。所以,只有在对资源争夺剧烈的高并发场景...原创 2012-09-25 11:47:36 · 135 阅读 · 0 评论 -
Java多线程发展简史(2)
[size=medium][b]JDK 1.2[/b]1998年年底的JDK1.2版本正式把Java划分为J2EE/J2SE/J2ME三个不同方向。在这个版本中,Java试图用Swing修正在 AWT中犯的错误,例如使用了太多的同步。可惜的是,Java本身决定了AWT还是Swing性能和响应都难以令人满意,这也是Java桌面应用难以比及其服务端应用的一个原因,在IBM后来的SWT,也不足以...原创 2012-09-24 17:29:39 · 108 阅读 · 0 评论 -
Java多线程发展简史(1)
[size=medium][b]引言[/b]首先问这样一个问题,如果提到Java多线程编程,你会想到什么?volatile、synchronized关键字?竞争和同步?锁机制?线程安全问题?线程池和队列?好吧,请原谅我在这里卖的关子,其实这些都对,但是又不足够全面,如果我们这样来谈论Java多线程会不会全面一些:模型:JMM(Java内存模型)和JC...原创 2012-09-24 16:31:26 · 111 阅读 · 0 评论 -
Java 多线程的同步示例及对象锁机制
[size=medium]java多线程的同步依靠的是对象锁机制,synchronized关键字的背后就是利用了封锁来实现对共享资源的互斥访问。 下面以一个简单的实例来进行对比分析。实例要完成的工作非常简单,就是创建10个线程,每个线程都打印从0到99这100个数字,我们希望线程之间不会出现交叉乱序打印,而是顺序地打印。 先来看第一段代码,这里我们在run()方法中加入了syn...原创 2012-09-22 16:49:53 · 232 阅读 · 0 评论 -
Java ThreadLocal解决线程安全问题
[b]ThreadLocal是什么 [/b]早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 ThreadLocal,顾名思义,它不是一个线程,而是线程的一个本地化对象。当工作于多线程中的对象使用ThreadLocal维护变量时,Thre...原创 2012-08-29 18:37:14 · 416 阅读 · 0 评论 -
Java多线程基础总结九:Mina窥探
[size=medium] 一直以来的多线程的基础总结都是脱离应用的,但是要说多线程的应用就不能不说Mina。Apache Mina作为一个高性能的Java异步并发网 络通讯框架,其内部的多线程的设计和实现可谓是学习多线程的良药。手上的Mina源码是svn剪下来的最新的代码,mvn转化成eclipse项目 后导入mina-core的源码看看多线程的应用吧。 首先简单的介绍在org....原创 2012-10-29 14:54:13 · 245 阅读 · 0 评论 -
Java多线程基础总结八:ReentrantReadWriteLock
[size=medium] 说到ReentrantReadWriteLock,首先要做的是与ReentrantLock划清界限。它和后者都是单独的实现,彼此之间没有继承或实现的关系。 然后就是总结这个锁机制的特性了:[list][*](a).重入方面其内部的WriteLock可以获取ReadLock,但是反过来ReadLock想要获得WriteLock则永远都不要想。[*](b...原创 2012-10-29 14:23:35 · 146 阅读 · 0 评论 -
Java多线程基础总结七:ReentrantLock
[size=medium] 之前总结了部分无锁机制的多线程基础,理想的状态当然是利用无锁同步解决多线程程序设计的问题。但是实际碰到的问题使得很多情 况下,我们不得不借助锁同步来保证线程安全。自从JDK5开始,有两种机制来屏蔽代码块在并行访问的干扰,synchronized关键字已经介绍 过了部分内容,所以这次简单的说说另一种锁机制:ReentrantLock。 对于synchroniz...原创 2012-10-29 13:56:03 · 154 阅读 · 0 评论 -
Java多线程基础总结六:synchronized(2)
[size=medium] 早在总结一时,我就尽量的把synchronized的重点说的简单:它就是配和对象的隐式锁使用的,注意一定是对象的隐式锁!那么下面的 这个例子又怎么解释呢?[/size][code="java"]package thread;public class ImplicitLockSample { public static void main(...原创 2012-10-27 22:36:25 · 126 阅读 · 0 评论 -
Java多线程基础总结五:atomic
[size=medium] 在简单介绍java.util.concurrent.atomic包之前,有个概念要先抄袭熟悉一遍:CAS(比较并交换)。现在大多数的处理器都提供对并发 访问的支持,这个支持的反映方式就是提供硬件的指令支持多处理的特殊需求。比如检测或者阻止其它处理器的并发访问来更新共享变量的 指令。对于 Intel x86架构的处理器来说就是通过提供实现CAS或者比较并设置的硬件...原创 2012-10-26 17:41:57 · 178 阅读 · 0 评论 -
Java多线程基础总结四:ThreadLocal
[size=medium] 说到[b]ThreadLocal[/b],首先说说这个类的命名。直观上看好像是个Thread的什么亲戚,但其实它想表达的意思是线程本地变量,也就是说每 个线程自己的变量。它作为一个JDK5以后支持范型的类,主要是想利用范型把非线程安全的共享变量,封装成绑定线程的安全不共享变量。 这样的解释我想我们多半能猜出它的实现思路:把一个共享变量在每个线程使用时,初始化一个副...原创 2012-10-22 11:34:51 · 120 阅读 · 0 评论 -
Java多线程基础总结三: volatile
[size=medium] 前面的两篇总结简单的说明了同步的一些问题,在使用基础的同步机制中还有两个可以分享的技术:volatile关键字和ThreadLocal。合 理的根据场景利用这些技术,可以有效的提高并发的性能,下面尝试结合自己的理解叙述这部分的内容,应该会有理解的偏差,我也会尽量 的在完善自己理解的同时同步更新文章的错误。 或许在知道synchronized配和对象内部锁的...原创 2012-10-22 11:34:36 · 118 阅读 · 0 评论 -
Java多线程基础总结二: Thread
[size=medium]对于Thread来说只想说两个方法,一个是setDaemon(false|true),另一个是join()。[b]首先说说守护线程[/b]这么东西是干什么用的?对于 Java应用我们都知道main方法是入口,它的运行代表着主线程开始工作了,我们也知道JVM里面有垃圾回收器的存在使得我们放心让main飞 奔,然而这背后的故事是垃圾回收线程作为守护着主线程的守护线...原创 2012-10-22 11:34:18 · 129 阅读 · 0 评论 -
Java多线程发展简史(4)
[size=medium]JDK 6.0JDK 6.0对锁做了一些优化,比如锁自旋、锁消除、锁合并、轻量级锁、所偏向等。在这里不一一介绍,但是给一个例子以有感性认识:[/size][code="java"]import java.util.Vector; public class LockElimination { public String getStr...原创 2012-09-25 14:00:51 · 151 阅读 · 0 评论