之前在协调对共享对象的访问时可以使用的机制只有synchronized和volatile。java5.0增加了一种新的机制:ReentrantLock。 Lock和ReentrantLock Lock提供了一种无条件的、可轮询的、定时的以及可中断的锁获取操作,所有加锁和解锁的方法都是显示的。 Ree ...
分类:
其他好文 时间:
2016-06-05 22:55:31
阅读次数:
242
点击进入_更多_Java千百问1、volatile关键字有什么用volatile是java语言的关键字,是变量修饰符。它是被设计用来修饰被不同线程访问和修改的变量。volatile的作用是: 作为指令关键字,确保本条指令不会被编译器优化,且应用的所有线程读取这个变量的值是一致的。简单的说,就是禁止编译器对代码进行优化,且强迫所有线程从共享内存读取该变量(而不是读取寄存器中的备份),变量发生改变时强行...
分类:
编程语言 时间:
2016-06-05 17:09:29
阅读次数:
195
Dictionary.TryGetValue:获取与指定的键相关联的值 效率比判断是否包含这个建再取得快 Activator.CreateInstance 用以在本地或从远程创建对象类型,或获取对现有远程对象的引用 volatile多用于多线程的环境,当一个变量定义为volatile时,读取这个变量 ...
public class Test { private volatile Test instance= null; private Test(){} public static Test getInstance(){ if(instance == null ) { synchronized(Test ...
分类:
其他好文 时间:
2016-06-03 01:12:59
阅读次数:
174
Linux中task_struct用来控制管理进程,结构如下: struct task_struct { //说明了该进程是否可以执行,还是可中断等信息 volatile long state; //Flage 是进程号,在调用fork()时给出 unsigned long flags; //进程上 ...
分类:
其他好文 时间:
2016-06-01 12:50:13
阅读次数:
182
1、进程状态 [cpp] view plain copy volatile long state; int exit_state; [cpp] view plain copy [cpp] view plain copy state成员的可能取值如下: [cpp] view plain copy #d ...
分类:
系统相关 时间:
2016-05-31 20:53:06
阅读次数:
297
Linux中task_struct用来控制管理进程,结构如下: struct task_struct { //说明了该进程是否可以执行,还是可中断等信息 volatile long state; //Flage 是进程号,在调用fork()时给出 unsigned long flags; //进程上 ...
分类:
系统相关 时间:
2016-05-31 10:16:52
阅读次数:
177
struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ struct thread_info *thread_info; atomic_t usage; unsigned long f ...
分类:
系统相关 时间:
2016-05-31 08:59:16
阅读次数:
218
上篇通过一个简单的例子说明了线程安全与不安全,在例子中不安全的情况下输出的结果恰好是逐个递增的(其实是巧合,多运行几次,会产生不同的输出结果),为什么会产生这样的结果呢,因为建立的Count对象是线程共享的,一个线程改变了其成员变量num值,下一个线程正巧读到了修改后的num,所以会递增输出。 要说 ...
分类:
编程语言 时间:
2016-05-31 01:07:41
阅读次数:
272
此前我们讲到了线程、同步以及volatile关键字,对于Java的并发编程我们有必要了解下Java的内存模型,因为Java线程之间的通信对于工程师来言是完全透明的,内存可见性问题很容易使工程师们觉得困惑,这篇文章我们来主要的讲下Java内存模型的相关概念。...
分类:
编程语言 时间:
2016-05-29 12:26:43
阅读次数:
222