自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (4)
  • 收藏
  • 关注

转载 Semaphore信号量使用

Java 信号量 Semaphore 介绍

2017-04-30 22:34:05 892

转载 Java并发编程:并发容器之CopyOnWriteArrayList(转载)

CopyOnWrite容器CopyOnWriteArrayList和CopyOnWriteArraySet

2017-04-27 18:05:11 326

原创 CountDownLatch和CyclicBarrier使用示例

CountDownLatchCyclicBarrirt

2017-04-26 23:23:03 323

原创 ThreadLocal成员变量和普通的成员变量对比

ThreadLocal普通成员变量对比

2017-04-26 21:38:36 2586

转载 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

spring自定义标签

扩展Spring, 自定义标签的实现, 包括 schema配置和自定义标签以及handler的加载过程

2018-06-02

jdk spi机制

采用jdk自带的spi实现spi(service provider interface)

2018-06-02

基于socket的rpc

一个底层基于使用socket通信的rpc,实现了类似dubbo远程服务调用,版本一。 接着会继续开发底层通信使用netty, 注册中心使用zk, 实现动态获取服务器资源。

2018-01-17

一个简单的RMI程序demo

该demo分为MainService.java服务端和MainClient.java客户端,既可以都在本地运行, 也可以上传到Linux环境使用 java -cp RMITest-0.0.1-SNAPSHOT.jar com.xxz.mainclient.MainClient 命令运行

2018-01-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除