JAVA学习:线程同步

线程同步:保证多线程并发访问线程安全,对可变对象(即对象成员变量值可以改变)采取加锁,整个流程即

加锁-->修改-->释放锁。


*PS:不可变对象意味着这个对象是final的,对象中所有的公共属性是final的。同时说明这个对象是线程安全的,这意味着他们可以在多线程中使用,而不需要使用synchronization。


加锁方法

1.同步代码块

在run()的方法体内:

synchronized(obj){
		}


2.同步方法


public synchronized void AnQuan(){//需要保证对某个成员变量的访问是线程安全的,可以用synchronized关键字修饰该成员变量所在方法
		}



*为减少加锁带来的性能影响,应:

1.不要对线程安全类的所有方法都进行同步,只对那些会改变竞争资源(也就是共享资源)的方法进行同步。

2.



3.释放同步监视器的锁定



4.同步锁

显示定义同步锁对象来实现同步,同步锁由LOCK对象充当。

import java.util.concurrent.locks.ReentrantLock;
	class x{
	private final ReentrantLock lock=new ReentrantLock();
		public void needLock(){	//需要加锁的方法
			lock.lock();//加锁
		try{//需要加锁的代码块
			 
		}
		finally{
			//释放锁
			lock.unlock();
		}
		}
	}



5.死锁






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值