线程同步假设创建并启动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
本文由本人首次发布在infoq中文站上:http://www.infoq.com/cn/articles/java-multithreaded-programming-mode-immutable-object。转载请注明作者: 黄文海 出处:http://viscent.iteye.com。多线程...
分类:
编程语言 时间:
2015-01-25 23:55:15
阅读次数:
243
本文由黄文海首次发布在infoq中文站上:http://www.infoq.com/cn/articles/Java-multithreaded-programming-mode-active-object-part1。转载请注明作者: 黄文海 出处:http://viscent.iteye.com...
分类:
编程语言 时间:
2015-01-25 23:47:45
阅读次数:
312
/*
进程: 正在进行中的程序(直译).
线程: 就是进程中一个负责程序执行的控制单元(执行路径)
一个进程中可以有多个执行路径, 称之为多线程.
一个进程中至少要有一个线程.
开启多个线程是为了同时运行多部分代码.
每一个线程都有自己运行的内容. 这个内容可以称为线程要执行的任务.
多线程的好处: 解决了多部分同时运行的问题.
多线程的弊端: 线程太多回到效率的降低.
其实应用程序...
分类:
编程语言 时间:
2015-01-23 23:10:20
阅读次数:
415
线程与多线程的概念
关于线程与多线程的较详细的理解可以参考:线程的解释 和
多线程的解释。
而我们要做的是,对其进行“精炼"。我们每天都在和电脑、手机打交道,每天都在使用各种各样的应用软件。
打开上电脑的任务管理器,就可以看到有一项名为"进程"的栏目,点击到里面可能就会发现一系列熟悉的名称:QQ,360等等。
所以首先知道了,QQ、360之类的应用软件在计算机上被称为一个进程。...
分类:
编程语言 时间:
2015-01-22 18:07:14
阅读次数:
267