- 浏览: 40700 次
- 性别:
- 来自: 杭州
最新评论
-
ityun:
JDK 8 没使用 Lock 了 采用 synchronize ...
Hashtable与ConcurrentHashMap区别 -
alvin198761:
你应该记录到 我的应用-->我的收藏
JDK 下载地址 -
pi88dian88:
string2020 写道楼主能不能谈谈 Hashtable, ...
java ArrayList与Vector源码学习 -
kidneyball:
string2020 写道楼主能不能谈谈 Hashtable, ...
java ArrayList与Vector源码学习 -
string2020:
楼主能不能谈谈 Hashtable,ConcurrentHas ...
java ArrayList与Vector源码学习
文章列表
从oracle上面找了很久的jdk6的下载地址,记录下。
http://www.oracle.com/technetwork/java/javase/archive-139210.html
可以找到各种版本的jdk
下面的内容基本上来自于《Java并发编程实践》, 留个记录~
一, ReentrantLock
ReentrantLock实现了Lock接口,提供了与synchronized 相同的互斥和内存可见性的保证。获得ReentrantLock的锁与进入synchronized 块有着相同的内存语义;释放ReentrantLock锁与退出synchronized块有着相同的内存语义。下面是Lock接口的定义:
package java.util.concurrent.locks;
import java.util.concurrent.TimeUnit;
public int ...
下面的内容基本上来自于《Java并发编程实践》, 留个记录~
一,CountDownLatch
CountDownLatch是一个灵活的闭锁的实现,允许一个或多个线程等待一个事件集的发生。
闭锁的状态包括一个计数器,初始化为一个正数,用来表现需要等待的事件数。countDown方法对计数器做减操作,表示一个事件已经发生了,而await方法会一直阻塞直到计数器为0,或者等待线程中断以及超时。
下面是n个线程并发执行的例子
public class CountDownLatchTest {
public long concurrentTasks(int nThreads ...
IOC: Inversion of Control, 指由spring容器来生成对象并且完成对象的装配。
下面来看下这两个问题:(下面是以 ClassPathXmlApplicationContext为起点)
1, spring如何生成对象?
2, spring如何完成对象组装?
完成这个的核心是通过BeanFactory,下面是BeanFactory的代码:
public interface BeanFactory {
String FACTORY_BEAN_PREFIX = "&";
Object getBean(String ...
相同点: Hashtable 和 ConcurrentHashMap都是线程安全的,可以在多线程环境中运行; key跟value都不能是null
区别: 两者主要是性能上的差异,Hashtable的所有操作都会锁住整个对象,虽然能够保证线程安全,但是性能较差; ConcurrentHashMap内部使用Segment数组,每个Segment类似于Hashtable,在“写”线程或者部分特殊的“读”线程中锁住的是某个Segment对象,其它的线程能够并发执行其它的Segment对象。
下面从下面两个问题来具体了解下Hashtable和ConcurrentHashMap
1, Hash ...
刚开始的时候,只是想导入源码直接看,但是水平不够,有些流程不知道怎么走了,, 于是搭建了调试的环境,边调试边学习。 搭建调试的环境可以参考下面的链接:
http://blog.csdn.net/teabook00/article/details/5620023
下面先粗略的 ...
Vector和ArrayList非常相似,两者都是用来表示可变数组,内部元素的存储都是通过数组来实现,可以随机的访问某个元素。
两者的主要区别是Vector的方法带有synchronized标志,各方法的访问是同步的,因此,Vector能够支持多线程,但是相应地效率比较低;ArrayList的方法没有synchronized标志,不是线程安全的。还有个比较小的差异是Vector在容量不够时,选择 size * 2扩容;ArrayList选择 size * 3/2 + 1扩容。
下面先来看下ArrayList的源码:
public class ArrayList<E> ...
, 以前一直没觉得,现在发现写博客还是一件蛮有趣的事情, :)
动态代理的实现有两种方式: 一种是jdk的动态代理,实现类必须实现某个接口; 另一种是cglib,使用底层的字节码技术,对实现类没有要求。
首先来看一个简单使用jdk动态代理的例子:
第一步: 定义接口
public interface Animal {
public String getName();
}
第二步:具体实现类
public class Dog implements Animal {
@Override
public String getName() { ...
, 之前在面试的时候遇到了这个问题,没有理清楚相互之间的同步关系,现在有空记录下~
静态方法同步形式如: static synchronized method()
非静态方法同步形式如: synchronized method()
其中, 静态同步(static synchronized)锁定的对象是class,非静态方法同步锁定的对象是 当前对象(this)。
//方法1
public synchronized void method1() {
}
//方法2
public synchronized void method2( ...
引用自 http://blog.csdn.net/jerryao/article/details/874101 Java栈与堆----对这两个概念的不明好久,终于找到一篇好文,拿来共享1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地 ...
偶然看到介绍Java内存泄漏的文章,写得很清晰
http://www.programcreek.com/2013/10/the-introduction-of-memory-leak-what-why-and-how/
/*
2. * Copyright 2002-2010 the original author or authors.
3. *
4. * Licensed under the Apache License, Version 2.0 (the "License");
5. * you may not use this file except in compliance with the License.
6. * You may obtain a copy of the License at
7. *
8. * ...
盘点Web开源项目大集合【太全了!!】
- 博客分类:
- 精华收录
转载自:http://blog.csdn.net/youacai/article/details/6732099?reload
下面是一个Web应用的开源列表。没什么可说的,太疯狂了。尤其是Web 2.0那一堆。我不知道你怎么想,有些开源项目的源码写得挺不好的,尤其是性能方面。或许你会以为改一改他们就可以成为为自己所用,不过,改这些开源的项目还真不容易。玩玩还可以。
数字媒体
相册(Flickr, Picasa)
Gallery,基于PHP + MySQL的Web相册。非常易于使用,包括一个配置向导,对于相片的操作包括自动生成缩略图、相片的大小改变、选择、排序等。
Piwigo,基于PHP ...