同步

1,再多线程中,两个或两个以上的线程需要共享对同一个数据的存取,使用同步可以保证原子性。
2,重入锁(ReentrantLock)和条件对象(Condition)
Lock mLock = new ReentrantLock();
Contion mContion =  mLock.newContion();
mlock.lock();
try{
     while(条件){
mContion.wait();
     }
}
finally{
 mLock.unlock();
}
3,一旦一个线程调用wait方法,它将处于该条件的等待和阻塞状态,直到另一个线程调用signalAll(mContion.signalAll();)方法还有一个方法signal随即解除某个线程的阻塞
4,上面方法等价于
             synchronize{     
     while(条件){
wait();
     }
5, wait相当于condition.wait();notifyAll()等价于condition.signalAll()
6,原子性:一个语句含有一个操作。 例:x = 3;只有赋值,是原子性;y = x ;首先读取x的值,然后赋给y,两个操作,不是原子性
7,可见性:一个线程修改的状态对另一个线程是可见的,也就是一个线程修改的结果另一个线程马上就能看到
8,有序性:禁止指令重排序
9,java内存模型定义了线程和主存之间的抽象关系:线程之间的共享变量存储在主存中,每个线程有一个私有的本地内存,本地内存中存储了该共享变量的副本
10,当一个共享变量被volatile修饰时,会保证修改的值立即被更新到住存中,对其他线程可见 ,另一个含义:禁止使用指令重排序
11,volatile保证操作的有序性和可见性,不保证原子性
12,正确使用volatile关键字:(1)对变量的写操作不会依赖当前值比如自增自减 (2)该变量不能包含在其它变量的不变式中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值