当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: java中原子操作是线程安全的论调经常被提到。
 

 

    摘要:相关源码下载:java.util.arraylistjava.util.abstractlistjava.util.listarraylist是list接口的一个可变长数组实现。实现了所有list接口的操作,并允许存储null值。除了没有进行同步,arraylist基本等同于vector。在vector中几乎对所有的方法都进行了同步,但arraylist仅对writeobject和readobje......
    摘要:vector 还是arraylist――哪一个更好,为什么? 要回答这个问题不能一概而论,有时候使用vector比较好;有时是arraylist,有时候这两个都不是 最好的选择。你别指望能够获得一个简单肯定答案,因为这要看你用它们干什么。下面有4个要考虑 的因素: l api l 同步处理 l 数据增长性 l 使用模式 下面针对这4个方面进行一一探讨 api 在由ken arnold等编著的《ja......


破除java神话之三:原子操作都是线程安全的
java中原子操作是线程安全的论调经常被提到.根据定义,原子操作是不会被打断地的操作,因此被认为是线程安全的.实际上有一些原子操作不一定是线程安全的.这个问题出现的原因是尽量减少在代码中同步关键字.同步会损害性能,虽然这个损失因jvm不同而不同.另外,在现代的jvm中,同步的性能正在逐步提高.尽管如此,使用同步仍然是有性能代价的,并且程序员永远会尽力提高他们的代码的效率,因此这个问题就延续了下来.在java中,32位或者更少位数的赋值是原子的.在一个32位的硬件平台上,除了double与long型的其它原始类型通常都是使用32位进行表示,而double与long通常使用64位表示.另外,对象引用使用本机指针实现,通常也是32位的.对这些32位的类型的操作是原子的.这些原始类型通常使用32位或者64位表示,这又引入了另一个小小的神话:原始类型的大小是由语言保证的.这是不对的.java语言保证的是原始类型的表数范围而非jvm中的存储大小.因此,int型总是有相同的表数范围.在一个jvm上可能使用32位实现,而在另一个jvm上可能是64位的.在此再次强调:在所有平台上被保证的是表数范围,32位以及更小的值的操作是原子的.那么,原子操作在什么情况下不是线程安全的?主要的一点是他们也许确实是线程安全的,但是这没有被保证!java线程允许线程在自己的内存区保存变量的副本.允许线程使用本地的私有拷贝进行工作而非每次都使用主存的值是为了提高性能.
...   下一页
 ·细说java之util类     »显示摘要«
    摘要:线性表,链表,哈希表是常用的数据结构,在进行java开发时,jdk已经为我们提供了一系列相应的类来实现基本的数据结构。这些类均在java.util包中。本文试图通过简单的描述,向读者阐述各个类的作用以及如何正确使用这些类。 collection ├list │├linkedlist │├arraylist │└vector │ └stack └set map ├hashtable ├hashmap......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE