现代计算机,cpu在计算的时候,并不总是从内存读取数据,它的数据读取顺序优先级是:寄存器-高速缓存-内存,线程计算的时候,原始的数据来自内存,在 计算过程中,有些数据可能被频繁读取,这些数据被存储在寄存器和高速缓存中,当线程计算完后,这些缓存的数据在适当的时候应该写回内存,当多个线程同时读 写某个内...
分类:
编程语言 时间:
2015-03-05 18:54:00
阅读次数:
225
1. 单独编译1.1 头文件中常包含的内容:函数原型使用#define或const定义的符号常量结构声明类声明模板声明内联声明1.2 只需将源代码文件加入到项目中,而不用加入头文件。这是因为用#include管理头文件。1.3 避免多次包含同一个头文件1 #ifndef COORDIN_H_2 #d...
分类:
编程语言 时间:
2015-03-05 14:37:33
阅读次数:
215
一:Java技术体系模块图 二:JVM内存区域模型 1.方法区 也称"永久代” 、“非堆”, ?它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。默认最小值为16MB,最大值为64MB,可以通过-XX...
分类:
其他好文 时间:
2015-03-03 13:47:19
阅读次数:
132
java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。如下是内存关系:java线程<==>工作内存<==>主内存,大部分数据存储在主内存中,线程的工作内存保存了被该线程使用到的变量的主内存副本拷..
分类:
编程语言 时间:
2015-02-28 18:52:52
阅读次数:
147
锁的释放-获取建立的happens before 关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:[java]copyclass a=; writer(){} reader(){i=a;……}假设线...
分类:
编程语言 时间:
2015-02-09 18:08:33
阅读次数:
263
原文:http://www.ibm.com/developerworks/cn/java/j-jtp10264/index.html多线程和并发性并不是什么新内容,但是 Java 语言设计中的创新之一就是,它是第一个直接把跨平台线程模型和正规的内存模型集成到语言中的主流语言。核心类库包含一个 Thr...
分类:
编程语言 时间:
2015-02-09 15:52:15
阅读次数:
101
写在前面这篇是Java多线程感悟的第二篇博客,主要讲述的JAVA层面对并发的一些支持。第一篇博客地址为:http://zhangfengzhe.blog.51cto.com/8855103/1607712下一篇博客将介绍线程池和一些同步工具类。目录9.并发内存模型及并发问题概述10.volatile和synchronized原理分析11.Thr..
分类:
编程语言 时间:
2015-02-07 19:09:50
阅读次数:
280
#include
void print(int a)
{
(a)++;
printf("a=%d\n",a);
}
int main(void)
{
int b = 6;
print(b);
printf("%d\n" ,b);
return 1;
}
//这种情况下就属于值传递,因为作用域和内存模型的原因,生命周期消亡,数据消失,故最后数据不变。
#include
...
分类:
其他好文 时间:
2015-02-07 17:27:35
阅读次数:
135
了解linux的内存模型,或许不能让你大幅度提高编程能力,但是作为一个基本知识点应该熟悉。坐火车外出旅行时,即时你对沿途的地方一无所知,仍然可以到达目标地。但是你对整个路途都很比较清楚的话,每到一个站都知道自己在哪里,知道当地的风土人情,对比一下所见所想,旅程可能更有趣一些。类似的,了解linux的...
分类:
系统相关 时间:
2015-02-05 20:05:37
阅读次数:
217
我们前面所讲的一切其实都只是为了一个目标那就是能正确发布一个线程安全的对象。
一:线程封闭
这个很好理解如果一个变量是在一个线程中完成的状态改变,那么这个变量肯定是线程安全的。
我们常使用的是栈封闭和ThreadLocal类。
在java运行时内存区中有一个虚拟机栈,栈封闭说的就是这个栈,这个栈是线程私有的,它的生命周期与线程相同。虚拟机栈描述描述的是java方法执行的内存模型:每个方法被...
分类:
编程语言 时间:
2015-02-02 07:10:09
阅读次数:
215