线程--同步与死锁

本文介绍多线程环境中同步的重要性和实现方法,包括同步代码块与同步方法的使用,以及可能出现的副作用如程序效率降低和死锁等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,本章目标

①了解线程同步的作用

②了解同步代码块及同步方法的作用

③了解死锁的产生



二,具体内容

说明:在多线程的开发中,同步与死锁的概念是非常重要的,一定要掌握以下几点:

①那里需要绒布

②如何实现同步,代码了解即可

③实现同步之后有什么副作用


问题引出:以卖火车票为例,如果想买火车票,可以去火车站购买或者去各个售票点,但是火车的票数是固定的,如果把各个售票点理解为各个线程的话,那么火车票应该是各个线程所共享的资源。


问题出来了,多个线程之间加入延迟操作,卖出的票数出现负数了



使用同步解决资源共享的问题,可以使用同步代码块或者同步方法来完成。


同步代码块

四级不同的代码块:

①普通代码块:直接定义在方法之中

②构造快:直接定义在类中,优先于构造方法执行,重复调用

③静态块:使用static关键字声明,优先于构造快,只执行一次

④同步代码块:使用synchronized关键字声明


同步的时候必须指明对象,一般情况下使用当前对象,用this关键字表示。


加入同步代码块之后,虽然解决了资源共享问题,但是程序速度下降,比异步操作要慢


同步方法:




2.2死锁

资源共享的时候需要同步操作。

程序中过多的同步会产生死锁。


死锁表示在一般情况下表示就是互相等待,是程序运行的时候出现的一种问题。





三,总结 

多个线程在访问同一资源的时候需要使用同步

同步使用synchronized关键字完成,分为同步代码块和同步方法








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值