在前面的一篇中,总结了如何使用Lock和Condition对象。我们先总结一下有关锁和条件的关键之处:
锁用来保护代码片段,任何时刻只能有一个线程执行被保护的代码。锁可以管理试图进入被保护代码段的线程。
锁可以拥有一个或多个相关的条件对象。每个条件对象管理那些已经进入被保护的代码段但还不能运行的线程。
synchronized关键字
Java中的每一个对象都有一个内部锁;...
分类:
编程语言 时间:
2015-01-30 09:17:35
阅读次数:
234
看到很多框架中都使用了ThreadLocal ,单从名字来说很可能把他理解成为一个“本地线程”之类的玩意儿。。。
先上代码:
package com.tiger.Thread.concurrent;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.u...
分类:
编程语言 时间:
2015-01-30 09:04:40
阅读次数:
166
import java.util.Random;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;i...
分类:
其他好文 时间:
2015-01-29 19:31:17
阅读次数:
150
有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABCABC…由于线程执行的不确定性,要保证这样有序的输出,必须控制好多线程的同步。线程同步有两种基本方法:(1)synchronized(2)wait,notify,notifyAll现在分别采用这两种方法来解答这道题目。pu...
分类:
编程语言 时间:
2015-01-29 17:29:18
阅读次数:
189
线程同步假设创建并启动100个线程,每个线程都往同一个账户中添加一个便士。非同步状态下得到的结果是2。package com.halin.demo;import java.util.concurrent.ExecutorService;import java.util.concurrent.Exec...
分类:
编程语言 时间:
2015-01-28 19:33:37
阅读次数:
229
对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的。就像学习每一门编程语言一样,Hello World!都是最经典的例子。实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓储,生产者消费者模型就显得没有说服力了。对于此模型,应该明确一下几点:1、生产者仅仅在仓储未满时候生产...
分类:
编程语言 时间:
2015-01-27 18:04:06
阅读次数:
160
多线程操作中,需注意互斥性和可见性,重点了解下可见性。
(一)可见性问题来源
1.cpu和内存速度相差过高,引入缓存(cache、寄存器等);一个线程由线程id、指令计数器PC、寄存器集合和堆栈构成,详见《程序员的自我修养》。
每个线程有自己的工作内存,修改进程主内存的值,都需要拷贝到工作内存修改后,再回写,其他现场可能出现,读取到未回写的脏数据。
2....
分类:
移动开发 时间:
2015-01-27 13:31:34
阅读次数:
181
类java.util.concurrent.Exchanger提供了一个同步点,在这个同步点,一对线程可以交换数据。每个线程通过exchange()方法的入口提供数据给他的伙伴线程,并接收他的伙伴线程提供的数据,并返回。 当在运行不对称的活动时很有用,比如当一个线程填充了buffer,另一个线程从b...
分类:
编程语言 时间:
2015-01-27 11:04:48
阅读次数:
302
(一)互斥性
互斥性,即原子性。原子,指最小的物质,具体不可再分性。
CPU运算中,对多线程进行时间片分割执行,一个程序块执行时不可分割,即满足互斥性原子性。
java中保证互斥性的方法:
1.用sychronized锁住程序块,实行互斥
synchronized (lock) {
a++;
}
2.用Atomic对变量操作实行互斥
public final stat...
分类:
编程语言 时间:
2015-01-26 10:13:56
阅读次数:
269
本文由本人首次发布在infoq中文站上:http://www.infoq.com/cn/articles/java-multithreaded-programming-mode-two-phase-termination。转载请注明作者: 黄文海 出处:http://viscent.iteye.co...
分类:
编程语言 时间:
2015-01-25 23:58:51
阅读次数:
372