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

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

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

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

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

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

 

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

posted @ 2022-12-01 21:52  wazjr  阅读(473)  评论(0编辑  收藏  举报