- 博客(6)
- 资源 (10)
- 收藏
- 关注
原创 Java并发编程 之 同步队列与等待队列
在上一篇博客中,我简单的介绍了对Condition和ReentrantLock的使用,但是想要更好的掌握多线程编程,单单会用是不够的。这篇我会针对Condition方法中的await和signal的实现原理来梳理一下我的理解。首先我们需要了解同步队列和等待队列的概念。简单的理解是同步队列存放着竞争同步资源的线程的引用(不是存放线程),而等待队列存放着待唤醒的线程的引用。同步队列中存放着一个个节点,当
2017-09-29 16:57:56 13479 11
原创 Java并发编程 之 Condition与ReentrantLock的使用
先来看一道笔试题(迅雷的笔试题):编写一个程序,开启3个线程,这3个线程的ID分别为A、B、C,每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示;如:ABCABC….依次递推。很明显考虑这题的时候,需要想到使线程之间能够的进行消息传递。这题如果想要用Object自带的wait和notify,相比于Condition感觉会更麻烦。wait和notify更容易实现两个线程之间的
2017-09-29 14:48:00 669
原创 Java并发编程 之 阻塞队列和CountDownLatch
前几天看到一个面试题目:有一个长度为2000的字符串,开三个线程去判断字符串中”u51”的个数。当时看到这个题目的时候,对并发编程是没有什么经验的,在实际项目多线程的应用也只有一两次。最近在恶补《Java并发编程的艺术》,对这个题目就有了解题的思路了。在这里记录一下对该题的解法和思路。一开始的时候,我能确定的是对“u51”个数相加是需要做同步处理,主要是如何去用三个线程去遍历这个字符串呢。需要保证索
2017-09-28 13:46:51 907
转载 Java并发编程 之 指令重排序
指令重排序 重排序的目的是提高运行并发度,发生在编译器和处理器阶段,遵循as-if-serial语义(不管怎么重排序,单线程程序的执行结果不能改变),也就是重排序所带来的问题是针对多线程的。 重排序发生的条件是A和B没有存在依赖关系,这里的依赖关系是指数据依赖关系和控制依赖关系两种。其中数据依赖表示两个以上操作访问同一个变量,且这两个操作中有一个为写操作。而控制依赖关系,比如if(a>0){in
2017-09-25 11:47:41 849
原创 回顾与展望
一眨眼,三个月过了。在研究生开学之际,在这里对过去的三月和未来做一点回顾与展望。回顾六月初,被导师叫到了实验室,自以为在本科阶段对计算机行业有一定广度的了解,结果到了实验室被师兄们无情的教育了。所以无论处在怎么样的一个环境,都不能骄傲。接手的第一个项目是一个管理系统,用的是ssh。因为师兄马上要出国,留给我交接的时间只有一个多月。可是本科阶段只用过jsp,像spring这些框架只是稍微了解过,现在要
2017-09-17 18:47:41 500
转载 springMVC上下文 和 springIOC容器 关联详解
一、先说ServletContext javaee标准规定了,servlet容器需要在应用项目启动时,给应用项目初始化一个ServletContext作为公共环境容器存放公共信息。ServletContext中的信息都是由容器提供的。举例:通过自定义contextListener获取web.xml中配置的参数 1.容器启动时,找到配置文件中的context-param作为键值
2017-09-14 19:22:13 742
android-async-http-1.4.7.jar
2016-06-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人