Java没有源代码的同步集合~

简介:

存档~~~~

Synchronized,volatile,lock

锁定->[就绪队列,阻塞队列]

第一个是jvm等级达到。

与volatile所不同的是,后者不能从工作存储器写回到主存储器。

所以后者经常使用于类变量的同步

lock来说。在竞争资源激烈的情况下,效率最高。


引用下:http://zzhonghe.iteye.com/blog/826162

synchronized: 
在资源竞争不是非常激烈的情况下。偶尔会有同步的情形下,synchronized是非常合适的。原因在于,编译程序一般会尽可能的进行优化synchronize,另外可读性非常好,无论用没用过5.0多线程包的程序猿都能理解。

ReentrantLock: 
ReentrantLock提供了多样化的同步。比方有时间限制的同步,能够被Interrupt的同步(synchronized的同步是不能Interrupt的)等。在资源竞争不激烈的情形下,性能略微比synchronized差点点。

可是当同步很激烈的时候,synchronized的性能一下子能下降好几十倍。

而ReentrantLock确还能维持常态。



Atomic: 
和上面的类似,不激烈情况下,性能比synchronized略逊,而激烈的时候。也能维持常态。激烈的时候,Atomic的性能会优于ReentrantLock一倍左右。可是其有一个缺点,就是仅仅能同步一个值。一段代码中仅仅能出现一个Atomic的变量。多于一个同步无效。

由于他不能在多个Atomic之间同步。


附一下,高速查看源代码吧

package com.lean;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.TreeSet;
import java.util.Vector;

public class JavaSouse {
	public static void main(String[] args) {

/*
 * Collection->List,Set
 * Map
 */
		
//-----------Map接口-----------------
		/*
		 * !!!!继承Dictionary,实现Map接口了
		 * 负载因子0.75  容器长度11
		 * 阏值=容器量*负载因子
		 * 方法同步
		 * 超出阏值。扩增2倍newCapacity = oldCapacity * 2 + 1;
		 */
		Hashtable<String,String> ht= new Hashtable<String,String>();
		ht.put("0", "0");
		
		/*
		 * 继承AbstractMap,实现Map接口
		 * 方法不同步
		 * 2倍扩增
		 */
		HashMap<String,String>  hm=new HashMap<String,String>();
		hm.put("0", "0");
		
		/*
		 * synchronized实现同步
		 * 
		 */
		Collections.synchronizedMap(hm);
	
//---------------------Set接口	----------------基于Map接口实现的类实现的
		
		/*
		 *继承AbstractSet,实现Set
		 *方法不同步
		 * 集合内元素不同
		 * resize(2 * table.length);扩增2倍容量
		 */
		HashSet<String> hs=new HashSet<String>();
		hs.add("0");
		
		/*
		 * 
		 */
		LinkedHashSet<String > lhs=new LinkedHashSet<String>();
		lhs.add("0");
		/*
		 * 基于TreeMap实现
		 * 排序升序对象集--红黑树---2-3-4树预习下就非常easy学~
		 * 对于红黑树记住一句话吧~~~~~
		 * !!!!一颗跟和叶子为黑色。而且跟叶路径中不存在连续的红色,随意节点到叶子节点的全部路径有同样数量的黑色节点的自二叉平衡树
		 */
		TreeSet<String > ts=new TreeSet<String>();
		ts.add("0");
	
		
//---	List接口	-----------------------基于Array接口实现
		/*
		 *方法不同步
		 * object数组实现的,初始化容量10
		 * modCount记录改动的次数,数组迭代过程能够有效的推断失败并返回
		 * 扩增1.5倍
		 */
		ArrayList<String> al=new ArrayList<String>();
		al.add("0");
		
		LinkedList<String> ll=new LinkedList<String>();
		ll.add("00");
		
		/*
		 * 方法同步synchronized
		 * 默认10,扩增2倍:
		 * int newCapacity = (capacityIncrement > 0) ?(oldCapacity + capacityIncrement) : (oldCapacity * 2);
		 * 
		 */
		Vector<String> vt=new Vector<String>();
		vt.add("1");
		
		
	}
}


版权声明:本文博主原创文章。博客,未经同意不得转载。






本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4868071.html,如需转载请自行联系原作者


相关文章
|
2月前
|
Java 开发者 C++
Java多线程同步大揭秘:synchronized与Lock的终极对决!
Java多线程同步大揭秘:synchronized与Lock的终极对决!
59 5
|
20天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
9天前
|
存储 安全 Java
Java 常用集合分类
Java 常用集合分类
13 2
|
2月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
31 5
|
2月前
|
安全 Java 开发者
Java多线程同步:synchronized与Lock的“爱恨情仇”!
Java多线程同步:synchronized与Lock的“爱恨情仇”!
81 5
|
2月前
|
Java 程序员
从0到1,手把手教你玩转Java多线程同步!
从0到1,手把手教你玩转Java多线程同步!
22 3
|
2月前
|
存储 Java 程序员
Java中的集合框架:从入门到精通
【8月更文挑战第30天】在Java的世界里,集合框架是一块基石,它不仅承载着数据的存储和操作,还体现了面向对象编程的精髓。本篇文章将带你遨游Java集合框架的海洋,从基础概念到高级应用,一步步揭示它的奥秘。你将学会如何选择合适的集合类型,掌握集合的遍历技巧,以及理解集合框架背后的设计哲学。让我们一起探索这个强大工具,解锁数据结构的新视角。
|
2月前
|
存储 算法 Java
Java中的集合框架深度解析云上守护:云计算与网络安全的协同进化
【8月更文挑战第29天】在Java的世界中,集合框架是数据结构的代言人。它不仅让数据存储变得优雅而高效,还为程序员提供了一套丰富的工具箱。本文将带你深入理解集合框架的设计哲学,探索其背后的原理,并分享一些实用的使用技巧。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇通往高效编程的大门。
|
2月前
|
Java 测试技术
Java多线程同步实战:从synchronized到Lock的进化之路!
Java多线程同步实战:从synchronized到Lock的进化之路!
86 1
|
2月前
|
开发者 C# 存储
WPF开发者必读:资源字典应用秘籍,轻松实现样式与模板共享,让你的WPF应用更上一层楼!
【8月更文挑战第31天】在WPF开发中,资源字典是一种强大的工具,用于共享样式、模板、图像等资源,提高了应用的可维护性和可扩展性。本文介绍了资源字典的基础知识、创建方法及最佳实践,并通过示例展示了如何在项目中有效利用资源字典,实现资源的重用和动态绑定。
44 0
下一篇
无影云桌面