关于线程安全的常用策略

因为线程间是不能相互传递数据的,这就导致操作同一个共享对象的内存存在某个线程改变时候,在其他线程不会随时更新,
这就会导致一个问题,所以下面讨论一下关于线程安全的几种常用方式
1.lock锁机制:哪个线程先抢到锁,其他线程调用到此方法时候休眠,直到这个线程释放锁,其他线程能继续运行此方法。
lock.lock();
try{
Thread.sleep(100);
}catch(InterruptedException e){
e.printStackTrace();
}finally{
lock.unlock();
}
2.synchronized 同步的,互斥的:
1、同步代码块,非静态同步,同步当前实例
2、同步代码块,静态同步,同步类.class
3、还可以修饰方法
synchronized(this){
try{
Thread.sleep(100);
} catch(InterruptedException e){
e.printStackTrace();
}
}
3.volatile易变的:他可以修饰共享变量,虽然符号可见性,但是依旧不是原子性,主要针对共享变量,改变时候其他线程中也随时会改变,
特别是线程中不能使用在对自身进行运算的操作上,其次他消耗内存较小,不会造成阻塞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值