现在的位置: 首页 > 综合 > 正文

线程同步

2019年06月02日 ⁄ 综合 ⁄ 共 506字 ⁄ 字号 评论关闭

线程同步:

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

抱歉!评论已关闭.