码迷,mamicode.com
首页 >  
搜索关键字:java并发    ( 2349个结果
Java并发编程 - 关于不变性的一些思考
这篇记录一下保证并发安全性的策略之——不变性。(注意:是Immutable,不是Invariant!)将一连串行为组织为一个原子操作以保证不变性条件,或者使用同步机制保证可见性,以防止读到失效数据或者对象变为不一致状态,这些问题都是因为共享了可变的数据。如果我们能保证数据不可变,则这些复杂的问题就自...
分类:编程语言   时间:2014-10-21 21:05:45    阅读次数:292
JAVA 模拟瞬间高并发
前些日子接到了一个面试电话,面试内容我印象很深,如何模拟一个并发?当时我的回答虽然也可以算是正确的,但自己感觉缺乏实际可以操作的细节,只有一个大概的描述。       当时我的回答是:“线程全部在同一节点wait,然后在某个节点notifyAll。”       面试官:“那你听说过惊群效应吗?”       我:“我没有听过这个名词,但我知道瞬间唤醒所有的线程,会让CPU负载瞬间加大。” ...
分类:编程语言   时间:2014-10-21 19:45:12    阅读次数:247
(转)java线程安全问题之静态变量、实例变量、局部变量
java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同《java并发编程实践》中所说:写道给线程安全下定义比较困难。存在很多种定义,如:“一个类在可以被多个线程安全调用时就是线程安全的”。此处不赘述了,首先给出静态变量、实例变量、局部变量在多线程环境...
分类:编程语言   时间:2014-10-20 14:54:36    阅读次数:301
Java 并发编程(三)为现有的线程安全类中添加新的原子操作
Java 类库中包含许多有用的”基础模块“类。通常,我们应该优先选择重用这些现有的类而不是创建新的类。:重用能降低开发工作量、开发风险(因为现有类都已经通过测试)以及维护成本。有时候,某个线程安全类能支持我们需要的所有操作,但更多的时候,现有的类只能支持大部分的操作,此时就需要在不破坏线程安全的情况下添加一个新的操作。...
分类:编程语言   时间:2014-10-19 10:16:35    阅读次数:199
Java 并发编程(三)设计线程安全的类-实例封闭
到目前为止,我们已经介绍了关于线程安全与同步的一些基础知识。然而,我们并不希望对每一次内存访问都进行分析以确保是线程安全的,而是希望将一些现有的线程安全组件组合为更大规模的组合为更大规模的组件或程序。之后,我们会讲一些设计线程安全类的一些基本概念,介绍一些组合模式。...
分类:编程语言   时间:2014-10-18 22:25:01    阅读次数:344
java并发编程
锁的持有者,谁是锁 ??? public class Lock (?????? ?????? public synchronized? void fun1(){ ????????????? //业务运算.??????? ?????? }; ?????? public s...
分类:编程语言   时间:2014-10-16 14:48:52    阅读次数:220
Java并发(基础知识)—— Executor框架及线程池
在Java并发(基础知识)—— 创建、运行以及停止一个线程中讲解了两种创建线程的方式:直接继承Thread类以及实现Runnable接口并赋给Thread,这两种创建线程的方式在线程比较少的时候是没有问题的,但是当需要创建大量线程时就会出现问题,因为这种使用方法把线程创建语句随意地散落在代码中...
分类:编程语言   时间:2014-10-14 02:20:27    阅读次数:220
Java并发框架——AQS之如何使用AQS构建同步器
AQS的设计思想是通过继承的方式提供一个模板让大家可以很容易根据不同场景实现一个富有个性化的同步器。同步器的核心是要管理一个共享状态,通过对状态的控制即可以实现不同的锁机制。AQS的设计必须考虑把复杂重复且容易出错的队列管理工作统一抽象出来管理,并且要统一控制好流程,而暴露给子类调用的方法主要就是操作共享状态的方法,以此提供对状态的原子性操作。一般子类的同步器中使用AQS提供的getState、s...
分类:编程语言   时间:2014-10-13 22:48:57    阅读次数:249
Java 并发编程(二)对象的不变性和安全的发布对象
满足同步需求的另一种方法是使用不可变对象(Immutable Object)。到目前为止,我们介绍了许多与原子性和可见性相关的问题,例如得到失效数据,丢失更新操作或光查到某个对象处于不一致的状态等等,都与多线程视图同时访问同一个可变的状态相关。如果对象的状态不会改变,那么这些问题与复杂性也就自然消失了。 如果某个对象在被创建后其状态就不能被修改,那么这个对象就被成为不可变对象。线程安全型是不可变对象的固有属性之一,他们的不变性条件是由构造函数创建的,只要他们的状态不改变,那么这些不变性条件就...
分类:编程语言   时间:2014-10-12 23:49:08    阅读次数:326
Java 并发编程(二)对象的发布逸出和线程封闭
“发布(Publish)“一个对象是指使对象能够在当前作用域之外的代码中使用。可以通过 公有静态变量,非私有方法,构造方法内隐含引用 三种方式。 如果对象构造完成之前就发布该对象,就会破坏线程安全性。当某个不应该发布的对象被发布时,这种情况就被称为逸出(Escape)。 下面我们首先来看看一个对象是如何逸出的。 发布对象最简单的方法便是将对象的引用保存到一个共有的静态变量中,以便任何类和线程都能看见对象,如下面代码。...
分类:编程语言   时间:2014-10-12 21:52:40    阅读次数:388
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!