摘要: Semaphore的作用是,限制线程通行的数量,如果线程进入时达到通行数量,便等待其它正在通行的线程释放。 acquire()获取通行 release()释放通行 availablePermits()查看通行剩余次数 int drainPermits()缩减剩余通行次数为0,并返回缩减量 reduc 阅读全文
posted @ 2017-01-02 11:08 突破渴望 阅读(1367) 评论(0) 推荐(1) 编辑
摘要: CountDownLatch的作用是,线程进入等待后,需要计数器达到0才能通行。 CountDownLatch(int)构造方法,指定初始计数。 await()等待计数减至0。 await(long, TimeUnit)在指定时间内,等待计数减至0。 countDown()计数减1。 getCoun 阅读全文
posted @ 2017-01-02 03:06 突破渴望 阅读(1653) 评论(0) 推荐(0) 编辑
摘要: 本文原创,转载请注明出处。 参考文章: 《“JUC锁”03之 公平锁(一)》 《“JUC锁”03之 公平锁(二)》 锁分独占锁与共享锁,公平锁与非公平锁,悲观锁与乐观锁,可重入锁与不可重入锁,相关概念可查看其它文章。 Lock操作:加锁(lock),解锁(unlock),创建条件对象(newCond 阅读全文
posted @ 2017-01-02 00:12 突破渴望 阅读(618) 评论(0) 推荐(0) 编辑
摘要: 用例1:子线程等待主线程发放许可! 用例2:主线程提前发放许可给子线程! 用例3:子线程传递数据给主线程。 全部操作: park()/park(Object)等待通行准许。 parkNanos(long)/parkNanos(Object, long)在指定运行时间(即相对时间)内,等待通行准许。 阅读全文
posted @ 2016-12-30 12:51 突破渴望 阅读(1413) 评论(0) 推荐(0) 编辑
摘要: 关于volatile,找了一堆资料看,看完后想找一个方法去做测试,测了很久,感觉跟没有一样。 这本书《深入理解Java内存模型》,对volatile描述中有这样一个比喻的说法,如下代码所示,对a的读写相当于对b的同步读写。 也就是说,volatile只保证了读与写的同步,每次读取都是得到最新值,每次 阅读全文
posted @ 2016-12-30 01:26 突破渴望 阅读(572) 评论(0) 推荐(0) 编辑
摘要: 这是我参考的一篇文章《基于CAS的乐观锁实现》,讲述的是一种需要CPU支持的执行技术CAS(Compare and Swap)。 首先理解什么是原子性操作,意思是不能再拆分的操作,例如改写一个值,读取一个值都属于原子性操作。 那么CAS是两个操作,先比较旧值,比较通过后再进行改写,这种连合操作合并成 阅读全文
posted @ 2016-12-28 18:16 突破渴望 阅读(781) 评论(0) 推荐(0) 编辑
摘要: ThreadLocal相当于一个Map<Thread, T>,各线程使用自己的线程对象Thread.currentThread()作为键存取数据,但ThreadLocal实际上是一个包装了这个Map,并且线程只能存取自己的数据,不能操作其它线程的数据。 T get() set(T) remove() 阅读全文
posted @ 2016-12-28 16:04 突破渴望 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 本文原创,转载请标明原处! 启动与入口 Thread对象可操纵一个线程,而Runnable对象代表一个可被运行的对象,必须使用Thread对象的start()方法启动线程。启动后,会先运行Thread对象的run()方法,这个方法未被重写时,就会执行Runnable对象的run()方法。 主线程的入 阅读全文
posted @ 2016-12-26 01:26 突破渴望 阅读(1057) 评论(0) 推荐(0) 编辑
摘要: 本文原创,转载请标明原处! 有时需要追求效率,会代替一些算术运算。 求商:a >> n <=> a / 2^n 求积:a << n <=> a * 2^n 求余:a & ((1 << n) - 1) <=> a % 2^n 奇偶判断:a & 1 == 1 <==> a % 2 == 1 一般1表示选 阅读全文
posted @ 2016-12-24 00:03 突破渴望 阅读(1076) 评论(0) 推荐(0) 编辑
摘要: 这里,我将做一个简单的通信程序,分别使用三种原始的通信工具:BIO,NIO,AIO。 功能就是一个服务器,一个客户端。服务器就是处理请求,返回响应。而客户端就是连接服务器,发送请求,接收响应。 第一步:建立通信接口 Server抽象类,定义了一个处理请求,并返回响应的方法service(...)。C 阅读全文
posted @ 2016-12-22 16:39 突破渴望 阅读(1575) 评论(0) 推荐(0) 编辑