java使用synchronized进行同步

提到同步就离不开多线程——即多线程抢占资源时要保证线程的安全。

简单例子:如有一个全局变量int sum=1,有两个(A、B)线程对其进行操作,他们获取该资源时都是sum=1,而A线程对其进行加1写回去变成sum=2,如我们希望的是B线程对其也进行加1的话为sum=3,但是因为B线程获取到时是sum=1,所以进行加1写回去也是sum=2。为了解决类似的问题,引入了锁的概念——即在一个线程操作时进行锁定,暂时不给别的资源操作直到其释放。

先看几个概念:

1、单机

(a) 实例级:一般是没有static的都为实例锁,或者写法为 synchronized(this) {}

(b) 类级:一般没有static的都为实例锁,或者写法为 synchronized(AAA.class) {}

2、分布式(多机)

当系统是分布式的架构时,单机的方法就不管用了,一般如下方案

(a) 使用数据库

(b) 使用redis缓存

(c) 使用zookeeper

3、例子:使用synchronized进行同步

java使用synchronized进行同步

java使用synchronized进行同步

java使用synchronized进行同步

解决方案:加入同步

java使用synchronized进行同步

前面我们是只有一个实例,如果是两个实例呢?

java使用synchronized进行同步

解决方案:加上类级锁

java使用synchronized进行同步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值