Python爬虫之多线程下载豆瓣Top250电影图片

爬虫项目介绍   本次爬虫项目将爬取豆瓣Top250电影的图片,其网址为:https://movie.douban.com/top250, 具体页面如下图所示:   本次爬虫项目将分别不使用多线程和使用多线程来完成,通过两者的对比,显示出多线程在爬虫项目中的巨 ... »

java多线程系列:ThreadPoolExecutor

ThreadPoolExecutor自定义线程池 开篇一张图(图片来自 "阿里巴巴Java开发手册(详尽版)" ),后面全靠编 好了要开始编了,从图片中就可以看到这篇博文的主题了,ThreadPoolExecutor自定义线程池。 目录 1. "ThreadPoolExecutor构造函数介绍" 2 ... »

使用C++11原子量实现自旋锁

一、自旋锁 自旋锁是一种基础的同步原语,用于保障对共享数据的互斥访问。与互斥锁的相比,在获取锁失败的时候不会使得线程阻塞而是一直自旋尝试获取锁。当线程等待自旋锁的时候,CPU不能做其他事情,而是一直处于轮询忙等的状态。自旋锁主要适用于被持有时间短,线程不希望在重新调度上花过多时间的情况。实际上许多其 ... »

ScheduledThreadPoolExecutor详解

       本文主要分为两个部分,第一部分首先会对ScheduledThreadPoolExecutor进行简单的介绍,并且会介绍其主要API的使用方式,然后介绍了其使用时的注意点,第二部分则主要对ScheduledThread ... »

多线程算法总结

一、问题提出 单处理器上只能用串行算法,所谓的并行也是时间片轮转,没有真正达到并发的意义。上下文切换还会有时间消耗,是一种不得已而为之的算法。但是,多处理器时代,允许多条指令在处理器上并发执行,讨论并行算法。(多线程)多核处理器,面临分布式存储和共享存储的问题。分布式存储在访问另一个处理器存储时需要 ... »

Java基础知识回顾之五 ----- 多线程

前言 在 "上一篇" 文章中,回顾了Java的集合。而在本篇文章中主要介绍 多线程 的相关知识。主要介绍的知识点为线程的介绍、多线程的使用、以及在多线程中使用的一些方法。 线程和进程 线程 表示进程中负责程序执行的执行单元,依靠程序进行运行。线程是程序中的顺序控制流,只能使用分配给程序的资源和环境。 ... »

Java并发编程(五)锁的使用(下)

显式锁 上篇讲了使用synchronized关键字来定义锁,其实Java除了使用这个关键字外还可以使用Lock接口及其实现的子类来定义锁,ReentrantLock类是Lock接口的一个实现,Reentrant是“重入”的意思,因此这个锁也是支持重入的,这里就不再测试它的重入性了,感兴趣的同学可以自 ... »

多线程动态规划算法求解TSP(Traveling Salesman Problem) 并附C语言实现例程

TSP问题描述: 旅行商问题,即TSP问题(Travelling Salesman Problem)又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要 ... »

Python并发编程之从生成器使用入门协程(七)

大家好,并发编程 进入第七篇。 从今天开始,我们将开始进入Python的难点,那就是协程。 为了写明白协程的知识点,我查阅了网上的很多相关资料。发现很难有一个讲得系统,讲得全面的文章,导致我们在学习的时候,往往半知半解,学完还是一脸懵逼。 学习协程的第一门课程,是要认识生成器,有了生成器的基础,才能 ... »

Python并发编程之线程中的信息隔离(五)

大家好,并发编程 进入第三篇。 上班第一天,大家应该比较忙吧。小明也是呢,所以今天的内容也很少。只要几分钟就能学完。 昨天我们说,线程与线程之间要通过消息通信来控制程序的执行。 讲完了消息通信,今天就来探讨下线程里的信息隔离是如何做到的。 大家注意:信息隔离,这并不是官方命名的名词,也不是网上广为流 ... »

Python并发编程之线程消息通信机制任务协调(四)

大家好,并发编程 进入第四篇。 本文目录 前言 Event事件 Condition Queue队列 总结 . 前言 前面我已经向大家介绍了,如何使用创建线程,启动线程。相信大家都会有这样一个想法,线程无非就是创建一下,然后再start()下,实在是太简单了。 可是要知道,在真实的项目中,实际场景可要 ... »

Python并发编程之创建多线程的几种方法(二)

大家好,并发编程 进入第二篇。 今天的内容会比较基础,主要是为了让新手也能无障碍地阅读,所以还是要再巩固下基础。学完了基础,你们也就能很顺畅地跟着我的思路理解以后的文章。 本文目录 学会使用函数创建多线程 学会使用类创建多线程 多线程:必学函数讲解 经过总结,Python创建多线程主要有如下两种方法 ... »

并发编程(七):安全发布对象

什么是发布对象? 发布对象是指使一个对象能够被当前范围之外的代码所使用 什么是对象逸出? 对象逸出是一种错误的发布,指当一个对象还没有构造完成时,就使它被其他线程所见 逸出-demo 在此实例中Escape对象还没有构造完成,就访问了该对象的成员变量thisCanBeEscape,该类是线程不安全的 ... »

并发编程(六):线程安全性

什么是线程安全的类? 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要额外同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的 线程安全性包含哪些特性? 原子性:提供了互斥访问,同一时刻只能有一个线程对它进行操作 可见性:一个线程 ... »

并发编程(五):CAS

在atomic包中,大多数类都是借助unsafe类来实现的,如以下代码 incrementAndGet()方法的实现如下: 我们再继续深入getAndInt()方法,实现如下: 在以上代码中我们着重要说的是 compareAndSwapInt(var1, var2, var5, var5 + var ... »

线程池的简单调用(附动态图)

在实际工作中,很少会执行new Thread做多线程处理,而是会创建好线程池,再调用线程池资源。 就像连接数据库,从来不会说,用JDBC建立连接,而是用数据库连接池,Netty通信也是建个Channel通道池。 单独建个JDBC要加载驱动,写URL 数据库配置信息,还得关闭连接,每次... ... »

java线程的同步控制--重入锁ReentrantLock

我们常用的synchronized关键字是一种最简单的线程同步控制方法,它决定了一个线程是否可以访问临界区资源。同时Object.wait() 和Object.notify()方法起到了线程等待和通知的作用。这些工具对于实现复杂的多线程协作起到了重要的作用。 ... »