线程同步

线程同步:

同步的关键是信号量。它是一个被互斥使用的对象或者称之为互斥体,在某一时间段仅有一个线程可以独自使用该对象。当一个线程需要使用互斥体的时候,它必须首先尝试锁定(lock)互斥体,如果成功锁定那么就意味着它可以独自使用该互斥体;否则它必须等待其他线程释放互斥体。拥有互斥体的线程应该在适当时候(如不再需要该互斥体)释放对互斥体的所有权,这样才能让其他正在等待的线程有机会使用互斥体,否则可能造成线程的永久等待——死锁。
java提供了简便易用的同步机制,不用关心具体的操作系统的实现,而大部分计算机语言本身不支持同步,如C/C++本身并没有同步机制,它们必须依靠操作系统原语才能实现。
两种方法实现同步都会用到synchronized关键字。
使用同步方法:
所有对象都有与之对应的互斥体,也就是说在产生一个对象的同时也为它生成了一个互斥体。
总结:
在多线程情况下,如果有一个躲着多个方法能够改变对象的状态,那么应使用synchronized关键字来修饰那些方法以防止冲突。同时应该明白,一旦某个线程进入某个同步方法,那么没有其他线程可以同时进入这个对象的其他同步方法。不过,这个对象的其他非同步方法却没有这个限制。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值