Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理 Java并发编程:Synchronized底层优化(轻量级锁、偏向锁) Java 并发编程:线程间的协作(wait/notify/sleep/yield/join) Java 并发编程:volatile的使用及其原 ...
分类:
编程语言 时间:
2017-10-12 17:53:01
阅读次数:
355
valitile修饰的变量不允许线程内缓存以及重排序,它会直接修改主内存,每次使用前立即从主内存刷新,这样保证读到的都是最新的。但是只能保证变量的可见性,不能保证原子性(非原子操作不能保证线程安全),即存在线程安全问题 volatile 其本身包含“禁止指令重排序”的语义 synchronized ...
分类:
其他好文 时间:
2017-10-10 17:50:19
阅读次数:
218
一,volatile关键字的可见性 要想理解volatile关键字,得先了解下JAVA的内存模型,Java内存模型的抽象示意图如下: 从图中可以看出: ①每个线程都有一个自己的本地内存空间--线程栈空间???线程执行时,先把变量从主内存读取到线程自己的本地内存空间,然后再对该变量进行操作 ②对该变量 ...
分类:
编程语言 时间:
2017-10-10 13:08:07
阅读次数:
283
const_cast转换符是用来移除变量的const或volatile限定符。 对于const变量,我们不能修改它的值,这是这个限定符最直接的表现。但是我们就是想违背它的限定希望修改其内容怎么办呢? 下边的代码显然是达不到目的的: 因为对modifier的修改并不会影响到constant,这暗示了一 ...
分类:
编程语言 时间:
2017-10-10 13:02:36
阅读次数:
194
synchronized、volatile、ReentrantLock、concurrent 线程安全:当多个线程访问某一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的 synchronized:可以在任意对象及方法上加锁,而加锁的这段代码称为“互拆区” ...
分类:
编程语言 时间:
2017-10-10 10:02:55
阅读次数:
204
C#中的关键字 关键字是对编译器具有特殊意义的预定义保留标识符。它们不能在程序中用作标识符,除非它们有一个 @ 前缀。例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字。 下面是列出的所有的关键字在 C# 程序的任何部分都是保留标识符: abstract as base bool b ...
《java并发编程实战》的第7章是任务的取消与关闭。我觉得这一章和第6章任务执行同样重要,一个在行为良好的软件和勉强运行的软件之间的最主要的区别就是,行为良好的软件能很完善的处理失败、关闭和取消等过程。 一、任务取消 在java中没有一种安全的抢占式(收到中断请求就立刻停止)的方式来停止线程,因此也 ...
分类:
编程语言 时间:
2017-10-04 12:17:15
阅读次数:
262
开发环境:Ubuntu 12.04 开发板:JZ2440 256M NandFlash 64M SDRAM 交叉编译器:arm-linux-gcc-4.3.2 u-boot:u-boot-2012.04.01 开发环境:Ubuntu 12.04 开发板:JZ2440 256M NandFlash 6 ...
分类:
其他好文 时间:
2017-10-03 12:38:22
阅读次数:
184
我们都知道volatile为共享变量提供了可见性,下面就来分析这种可见性是如何实现的。 在说volatile之前,首先需要引入一个概念:缓存行。为了增加cpu的访存速度,通常会在cpu和内存之间增加多级缓存,如下图,L1、L2都是核心独享的缓存,L3为单个插槽上所有cpu共享的缓存,MainMemo ...
分类:
其他好文 时间:
2017-10-02 18:53:18
阅读次数:
179
一.基本概念 Flash Memory中文名字叫闪存,是一种长寿命的非易失性(Non-volatile Memory Device,在断电情况下仍能保持所存储的数据信息)的存储器。闪存按功能特性可分为两种,一种是NOR Flash,以编码应用为主,其功能多与运算相关;另一种为NAND Flash,主 ...
分类:
其他好文 时间:
2017-10-02 17:16:06
阅读次数:
205