多线程学习(5):synchronized 的基础使用

2018年10月03日

目录

前言

1)synchronized 方法

2)synchronized 块


 

前言

java中已经有了内置锁:synchronized,synchronized的特点是使用简单,一切交给JVM去处理,不需要显示释放;

java中,每个对象都有一个对象锁与之关联,该锁表明:任何时候只允许被一个线程所拥有,当一个线程调用对象的一段synchronized代码时,需要先获取这个锁,然后执行代码,执行结束后,释放锁

 

 

作为对象锁,内置锁,synchronized 有两种使用方法:synchronized 方法 和 synchronized 块;此外还可以用于静态方法、类或某个实例,但是者都将会对程序执行有很大影响。

 

 

1)synchronized 方法

方法声明加入synchronized关键字。

	public synchronized void mutiThreadAccess(){
		//synchronized 方法
		//好处:保证这个方法同一时刻只能被一个线程访问,从而保证多线程访问的安全性;
		//弊端:当一个方法体的代码规模非常大,方法声明为synchronized 会大大影响程序的执行效率。为了提高程序的效率,java提供了synchronized块。
	}

 

2)synchronized 块

灵活性较高,可以指定上锁的对象。

	
	public void synchronizedBlock(){
		synchronized(this){
			//synchronized 代码块
			//可以将任意代码段声明为synchronized
		}
		
		ConcurrentHashMap syncObject = new ConcurrentHashMap();
		synchronized(syncObject){
			//synchronized 代码块给对象上锁
			//可以指定上锁的对象
		}
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值