线程相关
2015-10-25 20:57
274 查看
一个线程被唤醒不代表立即获取了对象的monitor,只有等调用完notify()或者notifyAll()并退出synchronized块,释放对象锁后,其余线程才可获得锁执行
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程相关
线程同步工具类:
CyclicBarrier :大家彼此等待,大家集合好后才统一出发,分散活动后又在指定地点集合碰面,
CountDownLatch:类似倒计时计数器,CountDownLatch类的countDown方法将计数器减1,当计数器到0时,所有等待者开始执行
阻塞队列:
使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样了,它会对当前线程产生阻塞,比如一个线程从一个空的阻塞队列中取元素,此时线程会被阻塞直到阻塞队列中有了元素。当队列中有元素后,被阻塞的线程会自动被唤醒(不需要我们编写代码去唤醒)。这样提供了极大的方便性。
阻塞队列使用最经典的场景就是socket客户端数据的读取和解析,读取数据的线程不断将数据放入队列,然后解析线程不断从队列取数据解析。还有其他类似的场景,只要符合生产者-消费者模型的都可以使用阻塞队列
示例示例代码
Servlet 单例多线程
Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程相关
线程同步工具类:
CyclicBarrier :大家彼此等待,大家集合好后才统一出发,分散活动后又在指定地点集合碰面,
CountDownLatch:类似倒计时计数器,CountDownLatch类的countDown方法将计数器减1,当计数器到0时,所有等待者开始执行
阻塞队列:
使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样了,它会对当前线程产生阻塞,比如一个线程从一个空的阻塞队列中取元素,此时线程会被阻塞直到阻塞队列中有了元素。当队列中有元素后,被阻塞的线程会自动被唤醒(不需要我们编写代码去唤醒)。这样提供了极大的方便性。
阻塞队列使用最经典的场景就是socket客户端数据的读取和解析,读取数据的线程不断将数据放入队列,然后解析线程不断从队列取数据解析。还有其他类似的场景,只要符合生产者-消费者模型的都可以使用阻塞队列
示例示例代码
Servlet 单例多线程
相关文章推荐
- Android的GradView接口组件的详细使用方法
- Linux高负载下优化MYSQL实例精解
- 公钥与私钥
- 摩莎W2150A_W2250A配置文档
- 【Java基础】Java类及成员和修饰符的关系
- 10.25
- 云时代的分布式数据库:阿里分布式数据库服务DRDS
- poj 1321 棋盘问题
- OOD沉思录 --- 面向动作与面向对象 --- 避免全能类
- map()3
- 函数探讨
- FiddlerCoreAPI 使用简介
- c++和java的区别
- OOD沉思录 --- 继承
- 网页复制回车 替换为word的回车
- 解决/阻止 div层内的div层点击事件冒泡触发的小方法
- LEETCODE-Count and Say
- DOM常用对象
- 关于makefile的=: =? =+区别
- 【机器学习算法】之决策树