线程的同步问题------synchronized关键字的运用

当多线程程序出现以下情况就需要使用同步来解决:

1.有共享数据。

2.多条语句操作共享数据。

 

实现同步的方法:

方式一:同步代码块:

同步代码块的格式:

synchronized(锁对象){

需要被同步的代码

}

同步代码块要注意的细节:

1.锁对象可以是任意的对象。

2.锁对象必须是多线程共享的资源,否则无效。

3.同步会影响效率,所以没有线程安全问题就不要使用同步锁

4.调用sleep方法不会释放锁对象,但是调用wait方法的线程会释放锁对象。

方式二:同步方法:

同步方法的格式:

修饰符 synchronized 返回值类型 方法名(参数){

}

同步方法要注意的细节:

1.同步方法的锁对象是固定的,不能由你来指定。

2.非静态同步方法的锁对象是this对象,也就是谁调用的这个方法谁就是这个锁对象。静态方法的锁对象就是这个类名.class这个字节码对象。

转载于:https://www.cnblogs.com/TGHZ/p/9745266.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值