
高并发
huangyunbin90
这个作者很懒,什么都没留下…
展开
-
简单实现一个java公平策略的锁
代码是:[code="java"]package com.eyu.gift.lock;import java.util.Queue;import java.util.concurrent.ConcurrentLinkedQueue;import java.util.concurrent.locks.LockSupport;class FailLock { Q...2015-03-24 21:40:55 · 109 阅读 · 0 评论 -
mina实现相同session后到的请求一定后处理的原理
[size=medium]mina后面的业务处理是一个线程池去处理的,在线程池的多线程的情况下,一般是不能保证后面的请求一定后处理的。因为可能后面的线程处理更快。mina是怎么做到的呢:基本原理是 每个session有个自己的queue,而且相同这个queue的元素一定在同一个线程处理具体原理:mina使用的是OrderedThreadPoolExecutor,具体的处理是Wo...2015-03-26 22:04:32 · 123 阅读 · 0 评论 -
java的Condition 加强版的wait notify
[size=medium]Lock对应Synchronized,使用之前都要先获取锁 Object Condition 休眠 wait await 唤醒个线程 notify signal 唤醒所有线程 notifyAll signalAll Co...2015-01-29 20:26:39 · 106 阅读 · 0 评论 -
转 Java的Volatile
[size=medium]原文:http://ifeve.com/syn-jmm-volatile/java的Volatile能保证可见性和又序性。保证Volatile的原理是:java的内存模型有这一条:如果把一个字段声明为volatile型,线程对这个字段写入后,在执行后续的内存访问之前,线程必须刷新这个字段且让这个字段对其他线程可见(即该字段立即刷新)。也就是说,读一个v...2013-09-07 17:24:48 · 77 阅读 · 0 评论 -
java的Phaser,多线程分阶段执行
[size=medium]Phaser是处理分阶段的多线程的很好的方法:比如需求是:开启3个线程,分别打印字母a,b,c各10次,然后进入下一阶段打印后面的字母d,e,f各10次,然后再进入下一阶段.......以此类推,直到整个字母表全部打印完毕。代码实现:[/size][code="java"]import java.util.concurrent.Phaser;...2015-01-25 12:00:01 · 133 阅读 · 0 评论 -
java用cyclicBarrier来实现Phaser的分段功能
[size=medium]cyclicBarrier是有自动重置功能的,我们可以用这个功能来实现分阶段:还是之前的需求: 开启3个线程,分别打印字母a,b,c各10次,然后进入下一阶段打印后面的字母d,e,f各10次,然后再进入下一阶段.......以此类推,直到整个字母表全部打印完毕。下面是代码,可以看到是有点麻烦的cyclicBarrier是没有明确的分段功能的,坑爹的是如...2015-01-26 10:22:08 · 108 阅读 · 0 评论 -
linux下文件的append是原子的(线程安全的)
[size=medium]具体的理由可以参考这个文章:http://www.pagefault.info/?p=139下面是这个文章的全文:[/size]先来描述一下,write系统调用的大体流程,首先内核会取得对应的文件偏移,然后调用vfs的write操作,而在vfs层的write操作的时候会调用对应文件系统的write方法,而在对应文件系统的write方法中aio_write方法,...2013-09-17 15:07:06 · 170 阅读 · 0 评论 -
System.nanoTime()的使用
[size=medium]纳秒 ns(nanosecond):纳秒, 时间单位。一秒的10亿分之一,即等于10的负9次方秒。常用作 内存读写速度的单位。 1纳秒=0.000001 毫秒 1纳秒=0.00000 0001秒java的System.currentTimeMillis()和System.nanoTime()区别:java中System.nanoTime(...2013-09-19 17:47:24 · 834 阅读 · 0 评论