什么是线程同步,什么是线程异步?同步的好处与弊端

本文详细解释了线程同步与异步的概念,对比了两者的优缺点,并阐述了同步机制如何解决线程安全问题,同时分析了同步带来的效率问题。

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

转载链接:什么是线程同步,什么是线程异步?同步的好处与弊端

线程同步:是多个线程同时访问同一资源,等待资源访问结束,浪费时间,效率低
线程异步:访问资源时在空闲等待时同时访问其他资源,实现多线程机制

异步处理就是,你现在问我问题,我可以不回答你,等我用时间了再处理你这个问题.同步不就反之了,同步信息被立即处理 – 直到信息处理完成才返回消息句柄;异步信息收到后将在后台处理一段时间 – 而早在信息处理结束前就返回消息句柄

区别同步和异步

一个进程启动的多个不相干线程,它们相互之间关系为异步。
同步必须执行到底之后才能执行其他操作,而异步可以任意操作

同步的好处与弊端

好处:解决了线程的安全问题。
弊端:每次都有判断锁,降低了效率。
但是在安全与效率之间,首先考虑的是安全。

同步的前提

一、多个线程执行的时候需要同步,如果是单线程则不需要同步。
二、多个线程在执行的过程中是不是使用同一把锁。如果是,就是同步。否则不是同步。

synchronzied(obj){ }同一个锁

synchronzied(new Object){ }不是同一个锁

run()中需要同步的代码进行同步,如果有的代码不需要同步,则不要放到同步代码块中去。

同步的表现形式有两种:

1、同步代码块,被同步关键字封装的代码就是同步代码块;
2、同步函数,被同步关键字修饰的函数就是同步函数。

同步代码块的锁是可以是任意对象,在执行之前就好创建好一个锁对象。那么同步函数的锁在哪里?
同步函数的锁就是调用该同步函数的对象,也就是this。

如果同步函数被static修饰,那么该同步函数的锁就是这个类在堆内存中形成的类文件对象。
这时候不一定有该类的对象,但一定有该类的字节码文件对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值