这篇讲讲ReentrantLock可重入锁,JUC里提供的可重入锁是基于AQS实现的阻塞式可重入锁。这篇
聊聊高并发(十六)实现一个简单的可重入锁 模拟了可重入锁的实现。可重入锁的特点是:
1. 是互斥锁,基于AQS的互斥模式实现,也就是说同时只有一个线程进入临界区,唤醒下一个线程时也只能释放一个等待线程
2. 可重入,通过设置了一个字段exclusiveOwnerThread来标示当前获...
分类:
编程语言 时间:
2014-11-11 19:21:34
阅读次数:
616
CountDownLatch闭锁也是基于AQS实现的一种同步器,它表示了“所有线程都等待,直到锁打开才继续执行”的含义。它和Semaphore的语意不同, Semaphore的获取和释放操作都会修改状态,都可能让自己或者其他线程立刻拿到锁。而闭锁的获取操作只判断状态是否为0,不修改状态本身,闭锁的释放操作会修改状态,每次递减1,直到状态为0。
所以正常情况下,闭锁的获取操作只是等待,不会立刻让自...
分类:
编程语言 时间:
2014-11-11 16:48:15
阅读次数:
216
又见回文数
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
冷淡的回文数被水了,各种被水,然后他很生气,然后...
一个数从左边读和从右边读一样,就说这个数是回文数。如121就是一个回文数。
这个简单了点,咱们这样规定:给定一个十进制数,你判断一下在二~十六进制下她是否是回文数,你能征服她吗?
如17用十进制表示它不是回文数,...
分类:
其他好文 时间:
2014-11-11 16:39:27
阅读次数:
199
做项目也将近一年的时间了。从一开始就经常提到“一个十六进制字节”,然而一开始就是迷惑的,直到现在。 一个十六进制字节,比如:FF。周围的人经常说这是一个十六进制字节。然后我就想,这不是两个字符吗,分别是F 和F,一个字符是一个字节,两个字符是两个字节,怎么就成一个十六进制字节,就成一个字节了。就是这...
分类:
其他好文 时间:
2014-11-11 10:37:54
阅读次数:
185
1 bool fn(vector::iterator vi1,vector::iterator vi2,int i) 2 { 3 vector::iterator vi3=vi2-1; 4 if(vi1>vi3) 5 return 0; 6 else 7 ...
分类:
编程语言 时间:
2014-11-11 00:43:05
阅读次数:
202
连续四天学习套接字的编程,可见套接字的重要性了。基于TCP和UDP分别写了两个程序。一是利用TCP实现一个服务器对多个客户端,客户端你发送信息,服务器就从事先准备好的五个字符串中随机回复一条。另一个是利用UDP实现两个人的对话,对话时可以是多个信息同时输入。 先是第一个程序。要实现一对多...
分类:
其他好文 时间:
2014-11-10 21:16:13
阅读次数:
367
截至目前,单片机入门篇的介绍就告一段落了。从本文开始将进入思想篇的学习。
思想篇对后面的具体知识学习进行整体的框架介绍,解释一些基础名词,以及对学习思想方法进行总结。思想篇的内容,对于后面的学习有很大的指导作用,尤其是模块化思想将会贯穿整个学习篇的知识体系。思想篇并不仅限于接下来的几篇文章,还会在学习篇中通过话题的形式穿插讲解。
阅读建议:如果还没有涉及到实践,阅读时不一定能对思想方法...
分类:
其他好文 时间:
2014-11-09 19:36:19
阅读次数:
299
??
描述
ACM队的队花C小+经常抱怨:“C语言中的格式输出中有十六、十、八进制输出,然而却没有二进制输出,哎,真遗憾!谁能帮我写一个程序实现输入一个十进制数n,输出它的二进制数呀?”
难道你不想帮帮她吗?^_^
输入输入有多个数据,数据以EOF结束;每个数据ni(0
(温馨提示:EOF即是一个文件的结束标志;while(scanf("%d",&n)!=EOF){})输出输出有多...
分类:
其他好文 时间:
2014-11-08 22:15:16
阅读次数:
242
坚持了一个月左右的时间,从最开始的对Redis的代码做分类,从struct结构体分析开始,到最后分析main主程序结束,中间,各大模块的代码逐个击破,学习,总之,收获了非常多,好久没有这么久的耐心把一个框架学透,学习一个框架,会用那只是小小的一部分,能把背后的原理吃透才是真功夫。在这个学习的最后阶段,是时候要来点干货了,我把这1个多月来的一些总结的一些比较好的代码,和设计思想总结出来了,原本想凑成...
分类:
其他好文 时间:
2014-11-08 12:10:10
阅读次数:
245
??
描述 现在给你一个16进制的加减法的表达式,要求用8进制输出表达式的结果。
输入第一行输入一个正整数T(0
接下来有T行,每行输入一个字符串s(长度小于15)字符串中有两个数和一个加号或者一个减号,且表达式合法并且所有运算的数都小于31位输出每个表达式输出占一行,输出表达式8进制的结果。样例输入
3
29+4823
18be+6784
4ae1-3d6c
样例输出
44114...
分类:
其他好文 时间:
2014-11-08 12:06:20
阅读次数:
215