摘要:我们常用wait(),notify()和notifyAll()方法来进行线程间通信。线程检查一个条件后就行进入等待状态,例如,在“生产者-消费者”模型中,生产者线程发现缓冲区满了就等待,消费者线程通过消费一个产品使得缓冲区有空闲并通知生产者线程。notify()或notifyAll()的调用给一个或
阅读全文
posted @ 2016-11-18 18:08
|
||
随笔分类 - 04-并发
摘要:我们常用wait(),notify()和notifyAll()方法来进行线程间通信。线程检查一个条件后就行进入等待状态,例如,在“生产者-消费者”模型中,生产者线程发现缓冲区满了就等待,消费者线程通过消费一个产品使得缓冲区有空闲并通知生产者线程。notify()或notifyAll()的调用给一个或
阅读全文
posted @ 2016-11-18 18:08
摘要:首先,join是一个同步方法 关键代码: while (isAlive()) { wait(0); //如果 timeout 为零,则不考虑实际时间,在获得通知前该线程将一直等待。 } isAlive是 join方法的本意和目标。即使中间被唤醒(虚拟唤醒),他仍然会再次调用wait(0)来等待下一次
阅读全文
posted @ 2016-11-18 10:31
摘要:java线程同步的原理java会为每个Object对象分配一个monitor, 当某个对象(实例)的同步方法(synchronized methods)被多个线程调用时,该对象的monitor将负责处理这些访问的并发独占要求。任何时刻,对一个指定object对象(实例)的某同步方法只能由一个线程来调
阅读全文
posted @ 2016-11-11 14:06
摘要:用于多线程计算数据,最后合并计算结果的应用场景 CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier) 它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。 CyclicBa
阅读全文
posted @ 2016-10-27 14:07
摘要:volatile修饰的变量,特性:保证可见性。 不能保证多个不在的操作之间的原子性。 类似 if(containsKey()) put 两步骤中间存在覆盖的可能。
阅读全文
posted @ 2016-10-26 13:51
|
||