"全面理解Java内存模型(JMM)及volatile关键字" "正确使用 Volatile 变量" Java内存模型 在并发编程中,需要处理两个关键问题:线程之间如何通信及线程之间如何同步。通信是指线程之间以何种机制来交换信息。同步是指程序中用于控制不同线程间操作发生相对顺序的机制。 线程间的通信 ...
分类:
其他好文 时间:
2018-05-02 16:21:43
阅读次数:
139
synchronized: public abstract class IntGenerator { private volatile boolean canceled = false; public abstract int next(); // Allow this to be canceled ...
分类:
其他好文 时间:
2018-04-30 23:27:08
阅读次数:
152
作为业务开发人员,能够在工作中用到的技术其实不多。虽然平时老是说什么,多线程,并发,注入,攻击!但是在实际工作中,这些东西不见得用得上。因为,我们用的框架已经把这些事做掉了。 比如web开发,外面有大量的请求进来,按理说,我们应该考虑并发问题。但其实,spring接到请求,分配到controller ...
分类:
编程语言 时间:
2018-04-30 22:10:07
阅读次数:
193
1.操作系统是怎么组织进程的 struct task_struct { ...... /* 进程状态 */ volatile long state; /* 指向内核栈 */ void *stack; /* 用于加入进程链表 */ struct list_head tasks; ...... /* 指 ...
分类:
系统相关 时间:
2018-04-30 18:09:51
阅读次数:
270
jdk1.6以后提供了java并发包。 volatile与内存可见性: 例子: 结果: 结论: main()线程读取到的td.isFlag并不是true。 这就涉及到了内存可见性问题。 具体原因: 重排序:代码书写的顺序与实际执行的顺序不同。 1. 编译器重排序 2. 指令重排序 3. 内存系统重排 ...
分类:
其他好文 时间:
2018-04-29 18:42:29
阅读次数:
171
一、 android应用内消息传递的方式: 1. handler方式 不同线程间传递消息。 2. Interface接口回调方式 任意两个对象。 3. Intent进行组件间通信,广播方式。 二、单例比较好的写法: private static volatile EventBus defaultIn ...
分类:
其他好文 时间:
2018-04-29 16:22:20
阅读次数:
177
1.auto 这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。 2.register 这个关键字命令编译器尽可能的将变量存在CPU内部寄存器中而不是通过 ...
分类:
编程语言 时间:
2018-04-29 13:33:22
阅读次数:
195
前言 InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性。 和大多数关系型数据库一样,InnoDB记录了对数据文件的物理更改,并保证总是日志先行,也就是所谓的WAL,即在持久化数据文件前 ...
分类:
数据库 时间:
2018-04-28 15:48:30
阅读次数:
184
下列说法正确的是()? A.我们直接调用Thread对象的run方法会报异常,所以我们应该使用start方法来开启一个线程 B.一个进程是一个独立的运行环境,可以被看做一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程 ...
分类:
其他好文 时间:
2018-04-27 23:52:26
阅读次数:
202
特性一注意:只使变量在线程之间具有可见性,变量被修改值直接刷新主内存。但没有使变量具有原子性,多个线程修改值的时候任然会出错。 特性二注意:指令重:jvm会对指令进行优化,在单线程下不影响程序的结果,但是在多线程的情况下有可能会对程序的运行结果造成影响,volatile关键字可以避免这种影响。 ...
分类:
其他好文 时间:
2018-04-27 22:09:03
阅读次数:
137