- 博客(23)
- 资源 (4)
- 收藏
- 关注
转载 Java并发编程:并发容器之CopyOnWriteArrayList(转载)
CopyOnWrite容器CopyOnWriteArrayList和CopyOnWriteArraySet
2017-04-27 18:05:11 326
转载 hashmap底层实现
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的)。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。2. HashMap的数据结构: 在Java编程语言中,最基本的结构就是两种,一个是数组,另
2017-04-26 13:26:09 413
转载 JDK中的队列接口:BlockingQueue详解
Java.util.concurrent.BlockingQueue<T>支持两个附加操作的 Queue,这两个操作是:获取元素时等待队列变为非空,以及存储元素时等待空间变得可用。BlockingQueue 方法以四种形式出现,对于不能立即满足但可能在将来某一时刻可以满足的操作,这四种形式的处理方式不同:第一种是抛出一个异常,第二种是返回一个特殊值(null 或 false,具体取决于操作),第三种
2017-04-25 09:14:34 1548
原创 Thread.join()用法
示例: package com.threadlocal的使用;public class ThreadLocalTest {//ThreadLocal<String> tl = new ThreadLocal<String>();private static int a=0;private synchronized static void incr() { for (int i=0; i<5;
2017-04-24 18:08:39 295
原创 ReentrantLock重入锁和ReentrantReadWriteLock读写分离锁
一、重入锁 示例:重入锁+Condition实现灵活多变得同步编程 package com.锁;import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock;public class ReentrantLockTest {ReentrantLock lock = new
2017-04-24 17:32:36 777
原创 java单例
示例1: 饿汉式单例 package com.单例模式;//饿汉式(类加载时就初始化) public class SingletonHungryV1 {//加载类的时候。直接初始化private static SingletonHungryV1 singleton = new SingletonHungryV1();//私有化该类,防止从外部创建该对象。private Singleton
2017-04-19 09:57:45 279
转载 对cas算法的理解
cas算法主要关心3个值:内存值V,预期值A,要更新的新值B 如下图所示:注:t1,t2线程是同时更新同一变量56的值因为t1和t2线程都同时去访问同一变量56,所以他们会把主内存的值完全拷贝一份到自己的工作内存空间,所以t1和t2线程的预期值都为56。 假设t1在与t2线程竞争中线程t1能去更新变量的值,而其他线程都失败。(失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次发起尝试)
2017-04-19 01:09:50 2252
原创 对java和c语言之中进程间通信的理解
进程间通信: 1 管道: java里是读写管道文件即可。c语言利用mkfifo创建两个管道文 件,java读写管道文件即可。 c语言就是pipe。例子:linux 命令:ps -ef | grep ‘XXX’.解释:ps和grep命令都是一个进程,ps进程的标准输出给了greo进程的标准输入。 2 信号量: java里是wait/n
2017-04-18 23:05:31 3097
原创 使用jdk和cglib实现动态代理
示例一: 使用jdk实现动态代理。 1.创建接口类UserService package com.动态代理.jdk;public interface UserService {public String getname(int id);public Integer getage(int age);} 2.创建实现子类UserServiceImpl package com.动态代理.jd
2017-04-18 20:16:45 384
原创 java简单实现冒泡 快速 选择排序
package com.排序;public class 冒泡排序 {/* * 冒泡排序,就是将第一个记录的值和第二个记录的值进行比较 * 如果,前面的值比后面的值大,则交换位置 * 反之,则不交换位置 * 这样经过这样的一趟后,最大的值排在了最后面。所以下次循环的时候,可以少循环一次。 * */private static void maopao(Integer [] a){
2017-04-18 20:06:55 1401
转载 HashMap的扩容机制---resize()
虽然在hashmap的原理里面有这段,但是这个单独拿出来讲rehash或者resize()也是极好的。什么时候扩容:当向容器添加元素的时候,会判断当前容器的元素个数,如果大于等于阈值—即当前数组的长度乘以加载因子的值的时候,就要自动扩容啦。扩容(resize)就是重新计算容量,向HashMap对象里不停的添加元素,而HashMap对象内部的数组无法装载更多的元素时,对象就需要扩大数组的长度,以便能装
2017-04-17 14:16:17 3039 1
原创 写一个死锁例子,及解决死锁
package com.线程间通信;public class DeadLock {public static void main(String[] args) throws InterruptedException { final DeadLock dd1 = new DeadLock(); final DeadLock dd2 = new DeadLock(); Threa
2017-04-17 11:07:03 2506 1
转载 java泛型-类型擦除
Java泛型-类型擦除 <div class="article_manage clearfix"> <div class="article_l"> <span class="link_categories"> 标签: <a href="http://www.csdn.net/tag
2017-04-16 23:23:22 425
转载 concurrenthashmap
本文转自:http://www.infoq.com/cn/articles/ConcurrentHashMap之前的一篇文章是:http://blog.csdn.net/caihaijiang/article/details/7435828线程不安全的HashMap因为多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMa
2017-04-16 23:19:49 270
原创 多线程读脏数据问题
示例:package com.线程间通信;public class DirtyThread {//两个实例变量private String name="zhangsan";private String password="123";public void setValue(String name, String password){//先设置name的值
2017-04-15 01:41:14 2724
原创 对象锁的同步与异步
同步:synchronized 同步的概念就是共享,我们要牢记“共享”,如果不是共享资源就没有必要进行同步。异步:aynchronized异步的概念就是独立,相互之间没有制约。同步的目的就是为了线程安全,线程安全需要满足两个特性:原子性可见性示例:package com.线程间通信;public class MutiThread2 {
2017-04-15 01:21:05 467
原创 synchronized锁住的对象问题
示例1:package com.线程间通信;public class MutiThread1 {private int a = 0;public synchronized void print(String tag){try {if(tag.equals("a") ){a = 100;System.out.println("tag a, set numb
2017-04-14 00:37:03 528
原创 使用util.concurrent并发包下的工具类,实现实时通知对方线程
package com.线程间通信;import java.util.ArrayList;import java.util.List;import java.util.concurrent.CountDownLatch;public class Thread2Thread {//声明一个 实例变量private volatile static List list
2017-04-13 23:31:00 276
原创 线程间使用wait和notify通信
package com.线程间通信;import java.util.ArrayList;import java.util.List;public class Thread2Thread {//声明一个 实例变量private volatile static List list = new ArrayList();public void add(){li
2017-04-13 23:09:59 223
原创 乐观锁和悲观锁
独占锁是一种悲观锁,synchronized就是一种独占锁,会导致其它所有需要锁的线程挂起,等待持有锁的线程释放锁。而另一个更加有效的锁就是乐观锁。所谓乐观锁就是,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。例如:hashtable, vector等类的实现全是采用加synchronized(锁)的方式实现的,是悲观锁。在JDK 5
2017-04-10 16:53:02 471
基于socket的rpc
2018-01-17
一个简单的RMI程序demo
2018-01-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人