首页 > 其他分享 >多线程加锁之后不就是单线程了吗

多线程加锁之后不就是单线程了吗

时间:2022-12-01 22:01:19浏览次数:51  
标签:加锁 单线程 lock Url 多线程 下载

突然灵机一动想到:多线程加锁之后不就是单线程了吗,其实在学java的时候老师应该有讲过,但是都忘记了。

Q: 多线程 lock 之后不就是单线程了吗?

答:lock并不需要锁定所有的操作。操作共享资源的时候,才需要锁定。如:

string 下载Url;
lock (list)
{
   下载Url = 取出Url(list);   // 1毫秒锁定,只能一个线程
}
下载到硬盘(下载Url);  // 需要2秒,这里可以多线程下载。

个人理解:由于锁定时只用了1毫秒,在下载东西时,cpu就可以执行另外的线程,进而表现出很快,而单线程在执行下载到硬盘的指令时,cpu并没有被利用,所以速度会很慢。

 

转:https://bbs.csdn.net/topics/392019228

标签:加锁,单线程,lock,Url,多线程,下载
From: https://www.cnblogs.com/wannacry/p/16942925.html

相关文章

  • mysql间隙锁加锁11个规则
        间隙锁是在可重复读隔离级别下才会生效的:next-keylock实际上是由间隙锁加行锁实现的,如果切换到读提交隔离级别(read-committed)的话,就好理解了,过程中去掉......
  • 多线程-基础
    1、继承Thread类​继承Thread必须重写run方法,(具体业务执行方法,需要执行的业务方法,定义在此方法中),注意此方法是线程启动后线程自动调用的;案例publicclassMyThreadext......
  • JAVA多线程有哪几种实现方式呢?
     下文笔者讲述java中多线程的实现方式,如下所示:JAVA中多线程主要有以下实现方式:1.继承Thread类2.实现Runnable接口3.使用ExecutorService、Call......
  • 两个程序的区别,在于多线程,全局变量中一个线程写入,另一个线程读取,会有脏数据产生
    两个程序的区别 左边程序:一个线程写入时候,另一个线程进行读取,不会读到错误数据右边程序:一个线程写入时候,另一个线程进行读取,会读到中间的数据 ......
  • Python threading Thread多线程的使用方法
    PythonthreadingThread多线程的使用方法目录​​PythonthreadingThread多线程的使用方法​​​​1.使用Threading模块创建线程​​​​2.Thread线程同步​​​​3.使用......
  • Qt网络编程-从0到多线程编程
    网络编程开发1.简介两个协议,一个是TCP协议,一个是UDP协议先说TCP:TCP的话,服务器端需要端口监听,直到有客户端进行连接发送过来请求数据,然后客户端根据请求数据进行应答,之......
  • Qt多线程开发总览,既然用到了就记录一下
    多线程在LBD_VM_Intercom中使用的一个简单的实例陶工给的dll需要进行异步操作才可以将视频画面附到窗体上,必须得在画面出现之后才可以附加画面,否则就有可能出现意外bug,所......
  • Python爬取m3u8视频(多线程)- OK好用,代码在文章尾
    摘自:https://www.cnblogs.com/python147/p/14511627.html1.前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。......
  • 网上一个哥们写的,使用Python写一个m3u8多线程下载器 -- 没用起来
    摘自:https://blog.csdn.net/muslim377287976/article/details/104340242/ 文章目录I.挖坑缘由II.功能/更新记录III.代码1.GUI2.下载工具类3.逻辑代码IV.下载地址I.挖坑......
  • java多线程模型
    一、线程状态:  新建状态(New):新创建了一个线程对象。就绪状态(可执行状态,Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,......