
java 并行编程
iteye_12702
这个作者很懒,什么都没留下…
展开
-
<基础-1> java并发编程基础
[b]一、 java并发编程基础[/b][b]1.1 程序、进程和线程[/b]1.程序是静态的概念,是一组指令的集合,是永久的。可以比作是电影的胶片。2.进程是动态的概念,是程序及其数据在计算机上的一次执行,有创建到消亡的生命周期。可以比作是一次胶片放映的过程。一个程序可以被多个进程执行,一个进程也可以执行多个程序。单道程序具有封闭性(所谓封闭性就是程序一旦运行,结果就只取决于程序...2013-09-12 22:03:57 · 136 阅读 · 0 评论 -
<高级-2> java内存模型
抓住4月尾巴:)前面介绍的所有原则,比如安全发布,同步策略的规范以及一致性等,他们的安全性都来自于JMM(java内存模型, java memory model)。[b]1.1 什么是内存模型,为什么需要它[/b]假设一个线程为变量aVariable赋值:aVariable = 3;内存模型需要解决这个问题:在什么条件下,读取aVariable的线程将看到这个值为3?在...2014-04-30 14:46:27 · 104 阅读 · 0 评论 -
<高级-1> 并发活跃性问题
[b]一、避免活跃性危险[/b]活跃性没有明确的定义。安全性的含义是“永远不发生糟糕的事情”,而活跃性则关注于另一个目标,即“某件正确的事情[b]最终会发生[/b]”。当某个操作无法继续执行下去时,就会发生活跃性问题。在串行程序中,活跃性问题的形式之一就是无意中造成的[b]无限循环[/b],从而使循环之后的代码无法得到执行。线程将带来其他一些活跃性问题。例如,如果线程 A在等待线程B释放其持有...2014-04-09 22:05:43 · 179 阅读 · 0 评论 -
<进阶-5> 线程池的原理和使用
[b]一、线程池Executor[/b]大多数并发应用程序都是围绕“[b]任务执行(Task Execution)[/b]”来构造的:任务通常是一些[b]抽象的[/b]且[b]离散的[/b]工作单元。通过把应用程序的工作分解到多个任务中,可以简化程序的组织结构。当围绕“任务执行”来设计应用程序结构时,第一步就是找出清晰的任务边界,理想情况下,各个任务是相互独立的:任务不依赖于其他任务的...2014-04-09 12:47:15 · 124 阅读 · 0 评论 -
<进阶-4> 并发容器类和同步工具类
[b]4.1 同步容器类[/b]同步容器类包括Vector和Hashtable,二者是jdk的一部分,此外还包括在jdk1.2中添加的一些功能相似的类:由Collections.synchronizedXxx等工厂方法创建的。这些类实现线程安全的方式是:[b]将他们的状态封装起来,并对每个公有方法都进行同步,使得每次只有一个线程能访问容器的状态。[/b]同步容器类是线程安全的,但在某些情况...原创 2014-04-01 22:34:34 · 172 阅读 · 0 评论 -
<进阶-3> 对象的组合
[...续上文] [b]3. 对象的组合[/b]前面我们已经介绍了关于线程安全和同步的一些基础知识。然而,我们并不希望每次内存访问都进行分析以确保程序是线程安全的,而是希望将一些现有的[b]线程安全组件组合[/b]为更大规模的组件或程序。下面介绍的一些组合模式,能够使一个类更容易成为线程安全的,并且在维护这些类时不会无意中破坏类的安全性保证。[b]3.1 设计线程安全的类[/b]...2014-03-31 21:14:12 · 109 阅读 · 0 评论 -
<进阶-2> 对象的共享和发布
[...续上文][b]2. 对象的共享和发布[/b]我们已经知道了同步代码块和同步方法可以确保以原子的方式执行操作,但一种常见的误解是认为关键字synchronized只能用于实现原子性或确定临界区,其实synchronized还有另一个重要方面:内存可见性。这一点前面讨论原子性的时候提到过,synchronized能同时保证原子性和可见性。[b]2.1 可见性[/b]前面...2014-03-07 00:18:34 · 133 阅读 · 0 评论 -
<进阶-1> 线程安全性:原子性,可见性,加锁机制
[b]1.线程安全性[/b][b]1.1 什么是线程安全性[/b]在构建稳健的[b]并发程序[/b]时,必须正确的使用[b]线程和锁[/b]。要编写线程安全的代码,其核心在于要对[color=red][b]状态访问[/b][/color]操作进行管理,特别是对[color=red]共享的(Shared)且可变的(Mutable)状态[/color]的访问(也就是破坏其中任一个条件都可以保证...2014-02-16 22:00:55 · 294 阅读 · 0 评论 -
<基础-3> 线程状态及属性
[b]1.线程状态[/b]线程有如下[b]6种枚举[/b]状态:1)New新生态,2)Runnable 可运行态,3)Blocked被阻塞态 4)Waiting等待态 5)Timed waiting计时等待态 6)Terminated被终止态。要确定一个线程的当前状态,可以调用Thread的实例方法[b]getState[/b]()方法,返回[b]State枚举对象[/b]。[...2014-02-07 12:21:16 · 131 阅读 · 0 评论 -
<基础-2> 构建线程安全应用程序
上一篇主要介绍了程序,进程,线程的概念和区别,进程的组成。然后是线程的创建和基本控制。接着本篇就介绍下什么是线程安全,怎样去保证线程安全的基本方法。[b]二、 构建线程安全应用程序[/b][b]2.1 什么是线程安全性[/b]线程安全很难给出一个准确的定义。大都是从不同的方面进行一个描述。当对一个复杂对象进行某种操作时,从操作开始到操作结束,该对象中间肯定会经历若干个非法的中间状态...2013-09-13 22:58:27 · 108 阅读 · 0 评论 -
<线程池-定时任务> ScheduledExecutorService之shutdown引发的RejectedExecutionException问题...
[b]一、 问题描述[/b][b]先来看一下异常信息,启动tomcat时就报错:[/b][code="java"]2015-3-20 15:22:39 org.apache.catalina.core.StandardContext listenerStart严重: Exception sending context initialized event to listener inst...2015-03-20 21:32:18 · 1143 阅读 · 0 评论