关于synchronized

关于synchronized

我一直在想互斥锁和同步锁。
往上查了查,说是同步锁在互斥锁的基础上,保证了执行顺序,也就是保证A在B之前就已经执行,那不就是纯粹的单线程吗?
而且,我也没见着synchronized关键字在哪儿体现出执行顺序的啊,那不就是单纯的互斥锁吗

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕阿园 2021-02-22 10:33:31

同学你好

1、同步的目的是为了保证共享数据在同一时刻只被一个线程使用,

而synchronized就是保证同一时刻只有一个线程可以执行某个方法(对象)

同学可以再去回顾下关于线程同步的视频,如下

https://class.imooc.com/lesson/1435#mid=32926

2、信号量可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。其它想进入该关键代码段的线程必须等待直到第一个线程释放信号量。

线程同步可以通过信号量来完成,synchronized同时只能有一个线程能访问,而信号量是可以控制同时允许几个线程访问;当信号量为1的时候才与synchronized等价

祝学习愉快~

好帮手慕阿园 2021-02-09 11:10:04

同学你好,同学可以参考下上面同学贴出的链接

互斥就是不同线程通过竞争进入临界区(共享的数据和硬件资源),为了防止访问冲突,在有限的时间内只允许其中之一独占性的使用共享资源;如不允许同时写

同步关系则是多个线程彼此合作,通过一定的逻辑关系来共同完成一个任务。一般来说,同步关系中往往包含互斥,同时对临界区的资源会按照某种逻辑顺序进行访问;如先生产后使用

关于synchronized同学可以参考上面同学链接中的例子,或者老师在视频中讲解的存取款的案例

祝学习愉快~

  • 提问者 易萧 #1
    还是不太明白,那个帖子也只给出了概念,至于售票的示例代码,我没有找到类似于 从生产到消费 这样一个有序的执行逻辑,每一个窗口售票都并不知道有其它窗口,没有哪一个窗口必须在前面,至于谁在前面全靠抢。 .. Java里的synchronized意为同步,但我却从没有见过用这个关键字体现出“同步”二字的代码。 .. 我在网上搜到,同步是通过信号量来完成的,synchronized和信号量有什么关系吗,否则为什么不叫mutex?
    2021-02-22 01:20:41
啃大饼的瓜子脸0_0 2021-02-09 10:13:24

你可以看看这个链接,还有他举得关于synchronize的那个例子

https://blog.csdn.net/liyangxueit/article/details/98871112

如果帮到你了,望采纳?

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师